function AutoTips(n, t, i) {
    AutoTipsFunction(n, t, i);
    setTimeout(function() {
        $(".AutoAlert").fadeOut(500)
    },
    3e3)
}
function AutoTipsFunction(n, t, i) {
    var r = "",
    u = "警告！";
    switch (t) {
    case 1:
        r = "alert-success";
        u = "成功！";
        break;
    case 0:
        r = "alert-error";
        u = "错误！"
    }
    $(".AutoAlert").hide();
    n.html('<div class="alert AutoAlert ' + r + '"><button type="button" class="close" data-dismiss="alert">&times;<\/button><strong>' + u + "<\/strong>" + i + "<\/div>");
    loadingcss3_close()
}
function AutoTopTips(n, t, i) {
    var r = "",
    u = "警告！";
    switch (n) {
    case 1:
        r = "alert-success";
        u = " √ ";
        break;
    case 0:
        r = "alert-danger";
        u = " × "
    }
    clearTimeout(AutoCloseTips);
    $("#global_tips").hide().html('<div class="alert ' + r + '"><button type="button" class="close" data-dismiss="alert">&times;<\/button><strong>' + u + "<\/strong>" + t + "<\/div>").fadeIn(1e3);
    loadingcss3_close();
    typeof i == "undefined" && (i = 5e3);
    i > 0 && (AutoCloseTips = setTimeout(function() {
        $("#global_tips").fadeOut(500)
    },
    i))
}
function getNowFormatDate() {
    var n = new Date,
    r = "-",
    u = ":",
    t = n.getMonth() + 1,
    i = n.getDate();
    return t >= 1 && t <= 9 && (t = "0" + t),
    i >= 0 && i <= 9 && (i = "0" + i),
    n.getFullYear() + r + t + r + i + " " + n.getHours() + u + n.getMinutes() + u + n.getSeconds()
}
function isNum(n) {
    return /^[-+]?\d+$/.test(n)
}
function GoThis(n, t) {
    t == "_blank" ? window.open(n) : location.href = n
}
function PlusLoading(n) {
    n.attr("disabled", "disabled").find("i").attr("class", "fa fa-spinner fa-spin m-right-xs")
}
function LessLoading(n) {
    n.removeAttr("disabled").find("i").attr("class", "")
}
function loadingcss3_open() {
    $(".fixedloading").addClass("loadingcss3");
    $(".fixedloading").fadeIn(300);
    $(".fixedloadingbg").fadeIn(300)
}
function loadingcss3_close() {
    $(".fixedloading").removeClass("loadingcss3");
    $(".fixedloading").fadeOut(300);
    $(".fixedloadingbg").fadeOut(300)
}
function LanguageUrl() {
    $(".hnLanguage .hnlang_a").click(function() {
        var n = location.href.toLowerCase().replace("/cn/", "/").replace("/en/", "/"),
        t = $(this).attr("data_val");
        t == "en" ? n = n.replace("/hn8888/", "/hn8888/en/") : t == "cn" && (n = n.replace("/hn8888/", "/hn8888/cn/"));
        location.href = n
    })
}
function copyToClipboard(n) {
    var i, t, f;
    if (window.clipboardData) window.clipboardData.clearData(),
    window.clipboardData.setData("Text", n),
    AutoTopTips(1, "已经成功复制到剪帖板上！");
    else if (navigator.userAgent.indexOf("Opera") != -1) window.location = n;
    else if (window.netscape) {
        try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
        } catch(e) {
            AutoTopTips(0, "被浏览器拒绝！\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'")
        }
        if (i = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard), !i) return;
        if (t = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable), !t) return;
        t.addDataFlavor("text/unicode");
        var r = {},
        r = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString),
        u = n;
        if (r.data = u, t.setTransferData("text/unicode", r, u.length * 2), f = Components.interfaces.nsIClipboard, !i) return ! 1;
        i.setData(t, null, f.kGlobalClipboard);
        AutoTopTips(1, "已经成功复制到剪帖板上！")
    }
}
if (!
function(n, t) {
    "object" == typeof module && "object" == typeof module.exports ? module.exports = n.document ? t(n, !0) : function(n) {
        if (!n.document) throw new Error("jQuery requires a window with a document");
        return t(n)
    }: t(n)
} ("undefined" != typeof window ? window: this,
function(n, t) {
    function ri(n) {
        var t = n.length,
        r = i.type(n);
        return "function" === r || i.isWindow(n) ? !1 : 1 === n.nodeType && t ? !0 : "array" === r || 0 === t || "number" == typeof t && t > 0 && t - 1 in n
    }
    function ui(n, t, r) {
        if (i.isFunction(t)) return i.grep(n,
        function(n, i) {
            return !! t.call(n, i, n) !== r
        });
        if (t.nodeType) return i.grep(n,
        function(n) {
            return n === t !== r
        });
        if ("string" == typeof t) {
            if (re.test(t)) return i.filter(t, n, r);
            t = i.filter(t, n)
        }
        return i.grep(n,
        function(n) {
            return i.inArray(n, t) >= 0 !== r
        })
    }
    function hr(n, t) {
        do n = n[t];
        while (n && 1 !== n.nodeType);
        return n
    }
    function ee(n) {
        var t = fi[n] = {};
        return i.each(n.match(h) || [],
        function(n, i) {
            t[i] = !0
        }),
        t
    }
    function cr() {
        u.addEventListener ? (u.removeEventListener("DOMContentLoaded", a, !1), n.removeEventListener("load", a, !1)) : (u.detachEvent("onreadystatechange", a), n.detachEvent("onload", a))
    }
    function a() { (u.addEventListener || "load" === event.type || "complete" === u.readyState) && (cr(), i.ready())
    }
    function yr(n, t, r) {
        if (void 0 === r && 1 === n.nodeType) {
            var u = "data-" + t.replace(vr, "-$1").toLowerCase();
            if (r = n.getAttribute(u), "string" == typeof r) {
                try {
                    r = "true" === r ? !0 : "false" === r ? !1 : "null" === r ? null: +r + "" === r ? +r: ar.test(r) ? i.parseJSON(r) : r
                } catch(f) {}
                i.data(n, t, r)
            } else r = void 0
        }
        return r
    }
    function ei(n) {
        var t;
        for (t in n) if (("data" !== t || !i.isEmptyObject(n[t])) && "toJSON" !== t) return ! 1;
        return ! 0
    }
    function pr(n, t, r, u) {
        if (i.acceptData(n)) {
            var s, e, h = i.expando,
            l = n.nodeType,
            o = l ? i.cache: n,
            f = l ? n[h] : n[h] && h;
            if (f && o[f] && (u || o[f].data) || void 0 !== r || "string" != typeof t) return f || (f = l ? n[h] = c.pop() || i.guid++:h),
            o[f] || (o[f] = l ? {}: {
                toJSON: i.noop
            }),
            ("object" == typeof t || "function" == typeof t) && (u ? o[f] = i.extend(o[f], t) : o[f].data = i.extend(o[f].data, t)),
            e = o[f],
            u || (e.data || (e.data = {}), e = e.data),
            void 0 !== r && (e[i.camelCase(t)] = r),
            "string" == typeof t ? (s = e[t], null == s && (s = e[i.camelCase(t)])) : s = e,
            s
        }
    }
    function wr(n, t, u) {
        if (i.acceptData(n)) {
            var o, s, h = n.nodeType,
            f = h ? i.cache: n,
            e = h ? n[i.expando] : i.expando;
            if (f[e]) {
                if (t && (o = u ? f[e] : f[e].data)) {
                    for (i.isArray(t) ? t = t.concat(i.map(t, i.camelCase)) : (t in o) ? t = [t] : (t = i.camelCase(t), t = (t in o) ? [t] : t.split(" ")), s = t.length; s--;) delete o[t[s]];
                    if (u ? !ei(o) : !i.isEmptyObject(o)) return
                } (u || (delete f[e].data, ei(f[e]))) && (h ? i.cleanData([n], !0) : r.deleteExpando || f != f.window ? delete f[e] : f[e] = null)
            }
        }
    }
    function vt() {
        return ! 0
    }
    function it() {
        return ! 1
    }
    function dr() {
        try {
            return u.activeElement
        } catch(n) {}
    }
    function gr(n) {
        var i = nu.split("|"),
        t = n.createDocumentFragment();
        if (t.createElement) while (i.length) t.createElement(i.pop());
        return t
    }
    function f(n, t) {
        var e, u, s = 0,
        r = typeof n.getElementsByTagName !== o ? n.getElementsByTagName(t || "*") : typeof n.querySelectorAll !== o ? n.querySelectorAll(t || "*") : void 0;
        if (!r) for (r = [], e = n.childNodes || n; null != (u = e[s]); s++) ! t || i.nodeName(u, t) ? r.push(u) : i.merge(r, f(u, t));
        return void 0 === t || t && i.nodeName(n, t) ? i.merge([n], r) : r
    }
    function we(n) {
        oi.test(n.type) && (n.defaultChecked = n.checked)
    }
    function eu(n, t) {
        return i.nodeName(n, "table") && i.nodeName(11 !== t.nodeType ? t: t.firstChild, "tr") ? n.getElementsByTagName("tbody")[0] || n.appendChild(n.ownerDocument.createElement("tbody")) : n
    }
    function ou(n) {
        return n.type = (null !== i.find.attr(n, "type")) + "/" + n.type,
        n
    }
    function su(n) {
        var t = ve.exec(n.type);
        return t ? n.type = t[1] : n.removeAttribute("type"),
        n
    }
    function li(n, t) {
        for (var u, r = 0; null != (u = n[r]); r++) i._data(u, "globalEval", !t || i._data(t[r], "globalEval"))
    }
    function hu(n, t) {
        if (1 === t.nodeType && i.hasData(n)) {
            var u, f, o, s = i._data(n),
            r = i._data(t, s),
            e = s.events;
            if (e) {
                delete r.handle;
                r.events = {};
                for (u in e) for (f = 0, o = e[u].length; o > f; f++) i.event.add(t, u, e[u][f])
            }
            r.data && (r.data = i.extend({},
            r.data))
        }
    }
    function be(n, t) {
        var u, e, f;
        if (1 === t.nodeType) {
            if (u = t.nodeName.toLowerCase(), !r.noCloneEvent && t[i.expando]) {
                f = i._data(t);
                for (e in f.events) i.removeEvent(t, e, f.handle);
                t.removeAttribute(i.expando)
            }
            "script" === u && t.text !== n.text ? (ou(t).text = n.text, su(t)) : "object" === u ? (t.parentNode && (t.outerHTML = n.outerHTML), r.html5Clone && n.innerHTML && !i.trim(t.innerHTML) && (t.innerHTML = n.innerHTML)) : "input" === u && oi.test(n.type) ? (t.defaultChecked = t.checked = n.checked, t.value !== n.value && (t.value = n.value)) : "option" === u ? t.defaultSelected = t.selected = n.defaultSelected: ("input" === u || "textarea" === u) && (t.defaultValue = n.defaultValue)
        }
    }
    function cu(t, r) {
        var f, u = i(r.createElement(t)).appendTo(r.body),
        e = n.getDefaultComputedStyle && (f = n.getDefaultComputedStyle(u[0])) ? f.display: i.css(u[0], "display");
        return u.detach(),
        e
    }
    function yt(n) {
        var r = u,
        t = ai[n];
        return t || (t = cu(n, r), "none" !== t && t || (ot = (ot || i("<iframe frameborder='0' width='0' height='0'/>")).appendTo(r.documentElement), r = (ot[0].contentWindow || ot[0].contentDocument).document, r.write(), r.close(), t = cu(n, r), ot.detach()), ai[n] = t),
        t
    }
    function au(n, t) {
        return {
            get: function() {
                var i = n();
                if (null != i) return i ? void delete this.get: (this.get = t).apply(this, arguments)
            }
        }
    }
    function pu(n, t) {
        if (t in n) return t;
        for (var r = t.charAt(0).toUpperCase() + t.slice(1), u = t, i = yu.length; i--;) if (t = yu[i] + r, t in n) return t;
        return u
    }
    function wu(n, t) {
        for (var f, r, o, e = [], u = 0, s = n.length; s > u; u++) r = n[u],
        r.style && (e[u] = i._data(r, "olddisplay"), f = r.style.display, t ? (e[u] || "none" !== f || (r.style.display = ""), "" === r.style.display && et(r) && (e[u] = i._data(r, "olddisplay", yt(r.nodeName)))) : (o = et(r), (f && "none" !== f || !o) && i._data(r, "olddisplay", o ? f: i.css(r, "display"))));
        for (u = 0; s > u; u++) r = n[u],
        r.style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? e[u] || "": "none"));
        return n
    }
    function bu(n, t, i) {
        var r = no.exec(t);
        return r ? Math.max(0, r[1] - (i || 0)) + (r[2] || "px") : t
    }
    function ku(n, t, r, u, f) {
        for (var e = r === (u ? "border": "content") ? 4 : "width" === t ? 1 : 0, o = 0; 4 > e; e += 2)"margin" === r && (o += i.css(n, r + w[e], !0, f)),
        u ? ("content" === r && (o -= i.css(n, "padding" + w[e], !0, f)), "margin" !== r && (o -= i.css(n, "border" + w[e] + "Width", !0, f))) : (o += i.css(n, "padding" + w[e], !0, f), "padding" !== r && (o += i.css(n, "border" + w[e] + "Width", !0, f)));
        return o
    }
    function du(n, t, u) {
        var o = !0,
        f = "width" === t ? n.offsetWidth: n.offsetHeight,
        e = k(n),
        s = r.boxSizing && "border-box" === i.css(n, "boxSizing", !1, e);
        if (0 >= f || null == f) {
            if (f = d(n, t, e), (0 > f || null == f) && (f = n.style[t]), pt.test(f)) return f;
            o = s && (r.boxSizingReliable() || f === n.style[t]);
            f = parseFloat(f) || 0
        }
        return f + ku(n, t, u || (s ? "border": "content"), o, e) + "px"
    }
    function e(n, t, i, r, u) {
        return new e.prototype.init(n, t, i, r, u)
    }
    function nf() {
        return setTimeout(function() {
            rt = void 0
        }),
        rt = i.now()
    }
    function kt(n, t) {
        var r, i = {
            height: n
        },
        u = 0;
        for (t = t ? 1 : 0; 4 > u; u += 2 - t) r = w[u],
        i["margin" + r] = i["padding" + r] = n;
        return t && (i.opacity = i.width = n),
        i
    }
    function tf(n, t, i) {
        for (var u, f = (st[t] || []).concat(st["*"]), r = 0, e = f.length; e > r; r++) if (u = f[r].call(i, t, n)) return u
    }
    function fo(n, t, u) {
        var f, a, p, v, s, w, h, b, l = this,
        y = {},
        o = n.style,
        c = n.nodeType && et(n),
        e = i._data(n, "fxshow");
        u.queue || (s = i._queueHooks(n, "fx"), null == s.unqueued && (s.unqueued = 0, w = s.empty.fire, s.empty.fire = function() {
            s.unqueued || w()
        }), s.unqueued++, l.always(function() {
            l.always(function() {
                s.unqueued--;
                i.queue(n, "fx").length || s.empty.fire()
            })
        }));
        1 === n.nodeType && ("height" in t || "width" in t) && (u.overflow = [o.overflow, o.overflowX, o.overflowY], h = i.css(n, "display"), b = "none" === h ? i._data(n, "olddisplay") || yt(n.nodeName) : h, "inline" === b && "none" === i.css(n, "float") && (r.inlineBlockNeedsLayout && "inline" !== yt(n.nodeName) ? o.zoom = 1 : o.display = "inline-block"));
        u.overflow && (o.overflow = "hidden", r.shrinkWrapBlocks() || l.always(function() {
            o.overflow = u.overflow[0];
            o.overflowX = u.overflow[1];
            o.overflowY = u.overflow[2]
        }));
        for (f in t) if (a = t[f], ro.exec(a)) {
            if (delete t[f], p = p || "toggle" === a, a === (c ? "hide": "show")) {
                if ("show" !== a || !e || void 0 === e[f]) continue;
                c = !0
            }
            y[f] = e && e[f] || i.style(n, f)
        } else h = void 0;
        if (i.isEmptyObject(y))"inline" === ("none" === h ? yt(n.nodeName) : h) && (o.display = h);
        else {
            e ? "hidden" in e && (c = e.hidden) : e = i._data(n, "fxshow", {});
            p && (e.hidden = !c);
            c ? i(n).show() : l.done(function() {
                i(n).hide()
            });
            l.done(function() {
                var t;
                i._removeData(n, "fxshow");
                for (t in y) i.style(n, t, y[t])
            });
            for (f in y) v = tf(c ? e[f] : 0, f, l),
            f in e || (e[f] = v.start, c && (v.end = v.start, v.start = "width" === f || "height" === f ? 1 : 0))
        }
    }
    function eo(n, t) {
        var r, f, e, u, o;
        for (r in n) if (f = i.camelCase(r), e = t[f], u = n[r], i.isArray(u) && (e = u[1], u = n[r] = u[0]), r !== f && (n[f] = u, delete n[r]), o = i.cssHooks[f], o && "expand" in o) {
            u = o.expand(u);
            delete n[f];
            for (r in u) r in n || (n[r] = u[r], t[r] = e)
        } else t[f] = e
    }
    function rf(n, t, r) {
        var h, e, o = 0,
        l = bt.length,
        f = i.Deferred().always(function() {
            delete c.elem
        }),
        c = function() {
            if (e) return ! 1;
            for (var s = rt || nf(), t = Math.max(0, u.startTime + u.duration - s), h = t / u.duration || 0, i = 1 - h, r = 0, o = u.tweens.length; o > r; r++) u.tweens[r].run(i);
            return f.notifyWith(n, [u, i, t]),
            1 > i && o ? t: (f.resolveWith(n, [u]), !1)
        },
        u = f.promise({
            elem: n,
            props: i.extend({},
            t),
            opts: i.extend(!0, {
                specialEasing: {}
            },
            r),
            originalProperties: t,
            originalOptions: r,
            startTime: rt || nf(),
            duration: r.duration,
            tweens: [],
            createTween: function(t, r) {
                var f = i.Tween(n, u.opts, t, r, u.opts.specialEasing[t] || u.opts.easing);
                return u.tweens.push(f),
                f
            },
            stop: function(t) {
                var i = 0,
                r = t ? u.tweens.length: 0;
                if (e) return this;
                for (e = !0; r > i; i++) u.tweens[i].run(1);
                return t ? f.resolveWith(n, [u, t]) : f.rejectWith(n, [u, t]),
                this
            }
        }),
        s = u.props;
        for (eo(s, u.opts.specialEasing); l > o; o++) if (h = bt[o].call(u, n, s, u.opts)) return h;
        return i.map(s, tf, u),
        i.isFunction(u.opts.start) && u.opts.start.call(n, u),
        i.fx.timer(i.extend(c, {
            elem: n,
            anim: u,
            queue: u.opts.queue
        })),
        u.progress(u.opts.progress).done(u.opts.done, u.opts.complete).fail(u.opts.fail).always(u.opts.always)
    }
    function af(n) {
        return function(t, r) {
            "string" != typeof t && (r = t, t = "*");
            var u, f = 0,
            e = t.toLowerCase().match(h) || [];
            if (i.isFunction(r)) while (u = e[f++])"+" === u.charAt(0) ? (u = u.slice(1) || "*", (n[u] = n[u] || []).unshift(r)) : (n[u] = n[u] || []).push(r)
        }
    }
    function vf(n, t, r, u) {
        function e(s) {
            var h;
            return f[s] = !0,
            i.each(n[s] || [],
            function(n, i) {
                var s = i(t, r, u);
                return "string" != typeof s || o || f[s] ? o ? !(h = s) : void 0 : (t.dataTypes.unshift(s), e(s), !1)
            }),
            h
        }
        var f = {},
        o = n === bi;
        return e(t.dataTypes[0]) || !f["*"] && e("*")
    }
    function ki(n, t) {
        var u, r, f = i.ajaxSettings.flatOptions || {};
        for (r in t) void 0 !== t[r] && ((f[r] ? n: u || (u = {}))[r] = t[r]);
        return u && i.extend(!0, n, u),
        n
    }
    function ao(n, t, i) {
        for (var o, e, u, f, s = n.contents,
        r = n.dataTypes;
        "*" === r[0];) r.shift(),
        void 0 === e && (e = n.mimeType || t.getResponseHeader("Content-Type"));
        if (e) for (f in s) if (s[f] && s[f].test(e)) {
            r.unshift(f);
            break
        }
        if (r[0] in i) u = r[0];
        else {
            for (f in i) {
                if (!r[0] || n.converters[f + " " + r[0]]) {
                    u = f;
                    break
                }
                o || (o = f)
            }
            u = u || o
        }
        if (u) return (u !== r[0] && r.unshift(u), i[u])
    }
    function vo(n, t, i, r) {
        var h, u, f, s, e, o = {},
        c = n.dataTypes.slice();
        if (c[1]) for (f in n.converters) o[f.toLowerCase()] = n.converters[f];
        for (u = c.shift(); u;) if (n.responseFields[u] && (i[n.responseFields[u]] = t), !e && r && n.dataFilter && (t = n.dataFilter(t, n.dataType)), e = u, u = c.shift()) if ("*" === u) u = e;
        else if ("*" !== e && e !== u) {
            if (f = o[e + " " + u] || o["* " + u], !f) for (h in o) if (s = h.split(" "), s[1] === u && (f = o[e + " " + s[0]] || o["* " + s[0]])) {
                f === !0 ? f = o[h] : o[h] !== !0 && (u = s[0], c.unshift(s[1]));
                break
            }
            if (f !== !0) if (f && n.throws) t = f(t);
            else try {
                t = f(t)
            } catch(l) {
                return {
                    state: "parsererror",
                    error: f ? l: "No conversion from " + e + " to " + u
                }
            }
        }
        return {
            state: "success",
            data: t
        }
    }
    function di(n, t, r, u) {
        var f;
        if (i.isArray(t)) i.each(t,
        function(t, i) {
            r || po.test(n) ? u(n, i) : di(n + "[" + ("object" == typeof i ? t: "") + "]", i, r, u)
        });
        else if (r || "object" !== i.type(t)) u(n, t);
        else for (f in t) di(n + "[" + f + "]", t[f], r, u)
    }
    function pf() {
        try {
            return new n.XMLHttpRequest
        } catch(t) {}
    }
    function go() {
        try {
            return new n.ActiveXObject("Microsoft.XMLHTTP")
        } catch(t) {}
    }
    function wf(n) {
        return i.isWindow(n) ? n: 9 === n.nodeType ? n.defaultView || n.parentWindow: !1
    }
    var c = [],
    l = c.slice,
    ir = c.concat,
    ii = c.push,
    rr = c.indexOf,
    ct = {},
    df = ct.toString,
    tt = ct.hasOwnProperty,
    r = {},
    ur = "1.11.1",
    i = function(n, t) {
        return new i.fn.init(n, t)
    },
    gf = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
    ne = /^-ms-/,
    te = /-([\da-z])/gi,
    ie = function(n, t) {
        return t.toUpperCase()
    },
    p,
    or,
    sr,
    h,
    fi,
    lt,
    o,
    lr,
    ar,
    vr,
    ot,
    ai,
    uf,
    ef,
    of,
    gt,
    gi,
    ti,
    nr,
    tr,
    bf,
    kf;
    i.fn = i.prototype = {
        jquery: ur,
        constructor: i,
        selector: "",
        length: 0,
        toArray: function() {
            return l.call(this)
        },
        get: function(n) {
            return null != n ? 0 > n ? this[n + this.length] : this[n] : l.call(this)
        },
        pushStack: function(n) {
            var t = i.merge(this.constructor(), n);
            return t.prevObject = this,
            t.context = this.context,
            t
        },
        each: function(n, t) {
            return i.each(this, n, t)
        },
        map: function(n) {
            return this.pushStack(i.map(this,
            function(t, i) {
                return n.call(t, i, t)
            }))
        },
        slice: function() {
            return this.pushStack(l.apply(this, arguments))
        },
        first: function() {
            return this.eq(0)
        },
        last: function() {
            return this.eq( - 1)
        },
        eq: function(n) {
            var i = this.length,
            t = +n + (0 > n ? i: 0);
            return this.pushStack(t >= 0 && i > t ? [this[t]] : [])
        },
        end: function() {
            return this.prevObject || this.constructor(null)
        },
        push: ii,
        sort: c.sort,
        splice: c.splice
    };
    i.extend = i.fn.extend = function() {
        var r, e, t, f, o, s, n = arguments[0] || {},
        u = 1,
        c = arguments.length,
        h = !1;
        for ("boolean" == typeof n && (h = n, n = arguments[u] || {},
        u++), "object" == typeof n || i.isFunction(n) || (n = {}), u === c && (n = this, u--); c > u; u++) if (null != (o = arguments[u])) for (f in o) r = n[f],
        t = o[f],
        n !== t && (h && t && (i.isPlainObject(t) || (e = i.isArray(t))) ? (e ? (e = !1, s = r && i.isArray(r) ? r: []) : s = r && i.isPlainObject(r) ? r: {},
        n[f] = i.extend(h, s, t)) : void 0 !== t && (n[f] = t));
        return n
    };
    i.extend({
        expando: "jQuery" + (ur + Math.random()).replace(/\D/g, ""),
        isReady: !0,
        error: function(n) {
            throw new Error(n);
        },
        noop: function() {},
        isFunction: function(n) {
            return "function" === i.type(n)
        },
        isArray: Array.isArray ||
        function(n) {
            return "array" === i.type(n)
        },
        isWindow: function(n) {
            return null != n && n == n.window
        },
        isNumeric: function(n) {
            return ! i.isArray(n) && n - parseFloat(n) >= 0
        },
        isEmptyObject: function(n) {
            var t;
            for (t in n) return ! 1;
            return ! 0
        },
        isPlainObject: function(n) {
            var t;
            if (!n || "object" !== i.type(n) || n.nodeType || i.isWindow(n)) return ! 1;
            try {
                if (n.constructor && !tt.call(n, "constructor") && !tt.call(n.constructor.prototype, "isPrototypeOf")) return ! 1
            } catch(u) {
                return ! 1
            }
            if (r.ownLast) for (t in n) return tt.call(n, t);
            for (t in n);
            return void 0 === t || tt.call(n, t)
        },
        type: function(n) {
            return null == n ? n + "": "object" == typeof n || "function" == typeof n ? ct[df.call(n)] || "object": typeof n
        },
        globalEval: function(t) {
            t && i.trim(t) && (n.execScript ||
            function(t) {
                n.eval.call(n, t)
            })(t)
        },
        camelCase: function(n) {
            return n.replace(ne, "ms-").replace(te, ie)
        },
        nodeName: function(n, t) {
            return n.nodeName && n.nodeName.toLowerCase() === t.toLowerCase()
        },
        each: function(n, t, i) {
            var u, r = 0,
            f = n.length,
            e = ri(n);
            if (i) {
                if (e) {
                    for (; f > r; r++) if (u = t.apply(n[r], i), u === !1) break
                } else for (r in n) if (u = t.apply(n[r], i), u === !1) break
            } else if (e) {
                for (; f > r; r++) if (u = t.call(n[r], r, n[r]), u === !1) break
            } else for (r in n) if (u = t.call(n[r], r, n[r]), u === !1) break;
            return n
        },
        trim: function(n) {
            return null == n ? "": (n + "").replace(gf, "")
        },
        makeArray: function(n, t) {
            var r = t || [];
            return null != n && (ri(Object(n)) ? i.merge(r, "string" == typeof n ? [n] : n) : ii.call(r, n)),
            r
        },
        inArray: function(n, t, i) {
            var r;
            if (t) {
                if (rr) return rr.call(t, n, i);
                for (r = t.length, i = i ? 0 > i ? Math.max(0, r + i) : i: 0; r > i; i++) if (i in t && t[i] === n) return i
            }
            return - 1
        },
        merge: function(n, t) {
            for (var r = +t.length,
            i = 0,
            u = n.length; r > i;) n[u++] = t[i++];
            if (r !== r) while (void 0 !== t[i]) n[u++] = t[i++];
            return n.length = u,
            n
        },
        grep: function(n, t, i) {
            for (var u, f = [], r = 0, e = n.length, o = !i; e > r; r++) u = !t(n[r], r),
            u !== o && f.push(n[r]);
            return f
        },
        map: function(n, t, i) {
            var u, r = 0,
            e = n.length,
            o = ri(n),
            f = [];
            if (o) for (; e > r; r++) u = t(n[r], r, i),
            null != u && f.push(u);
            else for (r in n) u = t(n[r], r, i),
            null != u && f.push(u);
            return ir.apply([], f)
        },
        guid: 1,
        proxy: function(n, t) {
            var u, r, f;
            return "string" == typeof t && (f = n[t], t = n, n = f),
            i.isFunction(n) ? (u = l.call(arguments, 2), r = function() {
                return n.apply(t || this, u.concat(l.call(arguments)))
            },
            r.guid = n.guid = n.guid || i.guid++, r) : void 0
        },
        now: function() {
            return + new Date
        },
        support: r
    });
    i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),
    function(n, t) {
        ct["[object " + t + "]"] = t.toLowerCase()
    });
    p = function(n) {
        function r(n, t, i, r) {
            var w, h, c, v, k, y, d, l, nt, g;
            if ((t ? t.ownerDocument || t: s) !== e && p(t), t = t || e, i = i || [], !n || "string" != typeof n) return i;
            if (1 !== (v = t.nodeType) && 9 !== v) return [];
            if (a && !r) {
                if (w = sr.exec(n)) if (c = w[1]) {
                    if (9 === v) {
                        if (h = t.getElementById(c), !h || !h.parentNode) return i;
                        if (h.id === c) return i.push(h),
                        i
                    } else if (t.ownerDocument && (h = t.ownerDocument.getElementById(c)) && ot(t, h) && h.id === c) return i.push(h),
                    i
                } else {
                    if (w[2]) return b.apply(i, t.getElementsByTagName(n)),
                    i;
                    if ((c = w[3]) && u.getElementsByClassName && t.getElementsByClassName) return b.apply(i, t.getElementsByClassName(c)),
                    i
                }
                if (u.qsa && (!o || !o.test(n))) {
                    if (l = d = f, nt = t, g = 9 === v && n, 1 === v && "object" !== t.nodeName.toLowerCase()) {
                        for (y = et(n), (d = t.getAttribute("id")) ? l = d.replace(hr, "\\$&") : t.setAttribute("id", l), l = "[id='" + l + "'] ", k = y.length; k--;) y[k] = l + yt(y[k]);
                        nt = gt.test(n) && ii(t.parentNode) || t;
                        g = y.join(",")
                    }
                    if (g) try {
                        return b.apply(i, nt.querySelectorAll(g)),
                        i
                    } catch(tt) {} finally {
                        d || t.removeAttribute("id")
                    }
                }
            }
            return si(n.replace(at, "$1"), t, i, r)
        }
        function ni() {
            function n(r, u) {
                return i.push(r + " ") > t.cacheLength && delete n[i.shift()],
                n[r + " "] = u
            }
            var i = [];
            return n
        }
        function h(n) {
            return n[f] = !0,
            n
        }
        function c(n) {
            var t = e.createElement("div");
            try {
                return !! n(t)
            } catch(i) {
                return ! 1
            } finally {
                t.parentNode && t.parentNode.removeChild(t);
                t = null
            }
        }
        function ti(n, i) {
            for (var u = n.split("|"), r = n.length; r--;) t.attrHandle[u[r]] = i
        }
        function wi(n, t) {
            var i = t && n,
            r = i && 1 === n.nodeType && 1 === t.nodeType && (~t.sourceIndex || ai) - (~n.sourceIndex || ai);
            if (r) return r;
            if (i) while (i = i.nextSibling) if (i === t) return - 1;
            return n ? 1 : -1
        }
        function cr(n) {
            return function(t) {
                var i = t.nodeName.toLowerCase();
                return "input" === i && t.type === n
            }
        }
        function lr(n) {
            return function(t) {
                var i = t.nodeName.toLowerCase();
                return ("input" === i || "button" === i) && t.type === n
            }
        }
        function tt(n) {
            return h(function(t) {
                return t = +t,
                h(function(i, r) {
                    for (var u, f = n([], i.length, t), e = f.length; e--;) i[u = f[e]] && (i[u] = !(r[u] = i[u]))
                })
            })
        }
        function ii(n) {
            return n && typeof n.getElementsByTagName !== ut && n
        }
        function bi() {}
        function yt(n) {
            for (var t = 0,
            r = n.length,
            i = ""; r > t; t++) i += n[t].value;
            return i
        }
        function ri(n, t, i) {
            var r = t.dir,
            u = i && "parentNode" === r,
            e = ki++;
            return t.first ?
            function(t, i, f) {
                while (t = t[r]) if (1 === t.nodeType || u) return n(t, i, f)
            }: function(t, i, o) {
                var s, h, c = [v, e];
                if (o) {
                    while (t = t[r]) if ((1 === t.nodeType || u) && n(t, i, o)) return ! 0
                } else while (t = t[r]) if (1 === t.nodeType || u) {
                    if (h = t[f] || (t[f] = {}), (s = h[r]) && s[0] === v && s[1] === e) return c[2] = s[2];
                    if (h[r] = c, c[2] = n(t, i, o)) return ! 0
                }
            }
        }
        function ui(n) {
            return n.length > 1 ?
            function(t, i, r) {
                for (var u = n.length; u--;) if (!n[u](t, i, r)) return ! 1;
                return ! 0
            }: n[0]
        }
        function ar(n, t, i) {
            for (var u = 0,
            f = t.length; f > u; u++) r(n, t[u], i);
            return i
        }
        function pt(n, t, i, r, u) {
            for (var e, o = [], f = 0, s = n.length, h = null != t; s > f; f++)(e = n[f]) && (!i || i(e, r, u)) && (o.push(e), h && t.push(f));
            return o
        }
        function fi(n, t, i, r, u, e) {
            return r && !r[f] && (r = fi(r)),
            u && !u[f] && (u = fi(u, e)),
            h(function(f, e, o, s) {
                var l, c, a, p = [],
                y = [],
                w = e.length,
                k = f || ar(t || "*", o.nodeType ? [o] : o, []),
                v = !n || !f && t ? k: pt(k, p, n, o, s),
                h = i ? u || (f ? n: w || r) ? [] : e: v;
                if (i && i(v, h, o, s), r) for (l = pt(h, y), r(l, [], o, s), c = l.length; c--;)(a = l[c]) && (h[y[c]] = !(v[y[c]] = a));
                if (f) {
                    if (u || n) {
                        if (u) {
                            for (l = [], c = h.length; c--;)(a = h[c]) && l.push(v[c] = a);
                            u(null, h = [], l, s)
                        }
                        for (c = h.length; c--;)(a = h[c]) && (l = u ? nt.call(f, a) : p[c]) > -1 && (f[l] = !(e[l] = a))
                    }
                } else h = pt(h === e ? h.splice(w, h.length) : h),
                u ? u(null, e, h, s) : b.apply(e, h)
            })
        }
        function ei(n) {
            for (var s, u, r, o = n.length,
            h = t.relative[n[0].type], c = h || t.relative[" "], i = h ? 1 : 0, l = ri(function(n) {
                return n === s
            },
            c, !0), a = ri(function(n) {
                return nt.call(s, n) > -1
            },
            c, !0), e = [function(n, t, i) {
                return ! h && (i || t !== ct) || ((s = t).nodeType ? l(n, t, i) : a(n, t, i))
            }]; o > i; i++) if (u = t.relative[n[i].type]) e = [ri(ui(e), u)];
            else {
                if (u = t.filter[n[i].type].apply(null, n[i].matches), u[f]) {
                    for (r = ++i; o > r; r++) if (t.relative[n[r].type]) break;
                    return fi(i > 1 && ui(e), i > 1 && yt(n.slice(0, i - 1).concat({
                        value: " " === n[i - 2].type ? "*": ""
                    })).replace(at, "$1"), u, r > i && ei(n.slice(i, r)), o > r && ei(n = n.slice(r)), o > r && yt(n))
                }
                e.push(u)
            }
            return ui(e)
        }
        function vr(n, i) {
            var u = i.length > 0,
            f = n.length > 0,
            o = function(o, s, h, c, l) {
                var y, d, w, k = 0,
                a = "0",
                g = o && [],
                p = [],
                nt = ct,
                tt = o || f && t.find.TAG("*", l),
                it = v += null == nt ? 1 : Math.random() || .1,
                rt = tt.length;
                for (l && (ct = s !== e && s); a !== rt && null != (y = tt[a]); a++) {
                    if (f && y) {
                        for (d = 0; w = n[d++];) if (w(y, s, h)) {
                            c.push(y);
                            break
                        }
                        l && (v = it)
                    }
                    u && ((y = !w && y) && k--, o && g.push(y))
                }
                if (k += a, u && a !== k) {
                    for (d = 0; w = i[d++];) w(g, p, s, h);
                    if (o) {
                        if (k > 0) while (a--) g[a] || p[a] || (p[a] = gi.call(c));
                        p = pt(p)
                    }
                    b.apply(c, p);
                    l && !o && p.length > 0 && k + i.length > 1 && r.uniqueSort(c)
                }
                return l && (v = it, ct = nt),
                g
            };
            return u ? h(o) : o
        }
        var it, u, t, ht, oi, et, wt, si, ct, y, rt, p, e, l, a, o, g, lt, ot, f = "sizzle" + -new Date,
        s = n.document,
        v = 0,
        ki = 0,
        hi = ni(),
        ci = ni(),
        li = ni(),
        bt = function(n, t) {
            return n === t && (rt = !0),
            0
        },
        ut = "undefined",
        ai = -2147483648,
        di = {}.hasOwnProperty,
        w = [],
        gi = w.pop,
        nr = w.push,
        b = w.push,
        vi = w.slice,
        nt = w.indexOf ||
        function(n) {
            for (var t = 0,
            i = this.length; i > t; t++) if (this[t] === n) return t;
            return - 1
        },
        kt = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
        i = "[\\x20\\t\\r\\n\\f]",
        ft = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
        yi = ft.replace("w", "w#"),
        pi = "\\[" + i + "*(" + ft + ")(?:" + i + "*([*^$|!~]?=)" + i + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + yi + "))|)" + i + "*\\]",
        dt = ":(" + ft + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + pi + ")*)|.*)\\)|)",
        at = new RegExp("^" + i + "+|((?:^|[^\\\\])(?:\\\\.)*)" + i + "+$", "g"),
        tr = new RegExp("^" + i + "*," + i + "*"),
        ir = new RegExp("^" + i + "*([>+~]|" + i + ")" + i + "*"),
        rr = new RegExp("=" + i + "*([^\\]'\"]*?)" + i + "*\\]", "g"),
        ur = new RegExp(dt),
        fr = new RegExp("^" + yi + "$"),
        vt = {
            ID: new RegExp("^#(" + ft + ")"),
            CLASS: new RegExp("^\\.(" + ft + ")"),
            TAG: new RegExp("^(" + ft.replace("w", "w*") + ")"),
            ATTR: new RegExp("^" + pi),
            PSEUDO: new RegExp("^" + dt),
            CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + i + "*(even|odd|(([+-]|)(\\d*)n|)" + i + "*(?:([+-]|)" + i + "*(\\d+)|))" + i + "*\\)|)", "i"),
            bool: new RegExp("^(?:" + kt + ")$", "i"),
            needsContext: new RegExp("^" + i + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + i + "*((?:-\\d)?\\d*)" + i + "*\\)|)(?=[^-]|$)", "i")
        },
        er = /^(?:input|select|textarea|button)$/i,
        or = /^h\d$/i,
        st = /^[^{]+\{\s*\[native \w/,
        sr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
        gt = /[+~]/,
        hr = /'|\\/g,
        k = new RegExp("\\\\([\\da-f]{1,6}" + i + "?|(" + i + ")|.)", "ig"),
        d = function(n, t, i) {
            var r = "0x" + t - 65536;
            return r !== r || i ? t: 0 > r ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
        };
        try {
            b.apply(w = vi.call(s.childNodes), s.childNodes);
            w[s.childNodes.length].nodeType
        } catch(yr) {
            b = {
                apply: w.length ?
                function(n, t) {
                    nr.apply(n, vi.call(t))
                }: function(n, t) {
                    for (var i = n.length,
                    r = 0; n[i++] = t[r++];);
                    n.length = i - 1
                }
            }
        }
        u = r.support = {};
        oi = r.isXML = function(n) {
            var t = n && (n.ownerDocument || n).documentElement;
            return t ? "HTML" !== t.nodeName: !1
        };
        p = r.setDocument = function(n) {
            var v, r = n ? n.ownerDocument || n: s,
            h = r.defaultView;
            return r !== e && 9 === r.nodeType && r.documentElement ? (e = r, l = r.documentElement, a = !oi(r), h && h !== h.top && (h.addEventListener ? h.addEventListener("unload",
            function() {
                p()
            },
            !1) : h.attachEvent && h.attachEvent("onunload",
            function() {
                p()
            })), u.attributes = c(function(n) {
                return n.className = "i",
                !n.getAttribute("className")
            }), u.getElementsByTagName = c(function(n) {
                return n.appendChild(r.createComment("")),
                !n.getElementsByTagName("*").length
            }), u.getElementsByClassName = st.test(r.getElementsByClassName) && c(function(n) {
                return n.innerHTML = "<div class='a'><\/div><div class='a i'><\/div>",
                n.firstChild.className = "i",
                2 === n.getElementsByClassName("i").length
            }), u.getById = c(function(n) {
                return l.appendChild(n).id = f,
                !r.getElementsByName || !r.getElementsByName(f).length
            }), u.getById ? (t.find.ID = function(n, t) {
                if (typeof t.getElementById !== ut && a) {
                    var i = t.getElementById(n);
                    return i && i.parentNode ? [i] : []
                }
            },
            t.filter.ID = function(n) {
                var t = n.replace(k, d);
                return function(n) {
                    return n.getAttribute("id") === t
                }
            }) : (delete t.find.ID, t.filter.ID = function(n) {
                var t = n.replace(k, d);
                return function(n) {
                    var i = typeof n.getAttributeNode !== ut && n.getAttributeNode("id");
                    return i && i.value === t
                }
            }), t.find.TAG = u.getElementsByTagName ?
            function(n, t) {
                if (typeof t.getElementsByTagName !== ut) return t.getElementsByTagName(n)
            }: function(n, t) {
                var i, r = [],
                f = 0,
                u = t.getElementsByTagName(n);
                if ("*" === n) {
                    while (i = u[f++]) 1 === i.nodeType && r.push(i);
                    return r
                }
                return u
            },
            t.find.CLASS = u.getElementsByClassName &&
            function(n, t) {
                if (typeof t.getElementsByClassName !== ut && a) return t.getElementsByClassName(n)
            },
            g = [], o = [], (u.qsa = st.test(r.querySelectorAll)) && (c(function(n) {
                n.innerHTML = "<select msallowclip=''><option selected=''><\/option><\/select>";
                n.querySelectorAll("[msallowclip^='']").length && o.push("[*^$]=" + i + "*(?:''|\"\")");
                n.querySelectorAll("[selected]").length || o.push("\\[" + i + "*(?:value|" + kt + ")");
                n.querySelectorAll(":checked").length || o.push(":checked")
            }), c(function(n) {
                var t = r.createElement("input");
                t.setAttribute("type", "hidden");
                n.appendChild(t).setAttribute("name", "D");
                n.querySelectorAll("[name=d]").length && o.push("name" + i + "*[*^$|!~]?=");
                n.querySelectorAll(":enabled").length || o.push(":enabled", ":disabled");
                n.querySelectorAll("*,:x");
                o.push(",.*:")
            })), (u.matchesSelector = st.test(lt = l.matches || l.webkitMatchesSelector || l.mozMatchesSelector || l.oMatchesSelector || l.msMatchesSelector)) && c(function(n) {
                u.disconnectedMatch = lt.call(n, "div");
                lt.call(n, "[s!='']:x");
                g.push("!=", dt)
            }), o = o.length && new RegExp(o.join("|")), g = g.length && new RegExp(g.join("|")), v = st.test(l.compareDocumentPosition), ot = v || st.test(l.contains) ?
            function(n, t) {
                var r = 9 === n.nodeType ? n.documentElement: n,
                i = t && t.parentNode;
                return n === i || !(!i || 1 !== i.nodeType || !(r.contains ? r.contains(i) : n.compareDocumentPosition && 16 & n.compareDocumentPosition(i)))
            }: function(n, t) {
                if (t) while (t = t.parentNode) if (t === n) return ! 0;
                return ! 1
            },
            bt = v ?
            function(n, t) {
                if (n === t) return rt = !0,
                0;
                var i = !n.compareDocumentPosition - !t.compareDocumentPosition;
                return i ? i: (i = (n.ownerDocument || n) === (t.ownerDocument || t) ? n.compareDocumentPosition(t) : 1, 1 & i || !u.sortDetached && t.compareDocumentPosition(n) === i ? n === r || n.ownerDocument === s && ot(s, n) ? -1 : t === r || t.ownerDocument === s && ot(s, t) ? 1 : y ? nt.call(y, n) - nt.call(y, t) : 0 : 4 & i ? -1 : 1)
            }: function(n, t) {
                if (n === t) return rt = !0,
                0;
                var i, u = 0,
                o = n.parentNode,
                h = t.parentNode,
                f = [n],
                e = [t];
                if (!o || !h) return n === r ? -1 : t === r ? 1 : o ? -1 : h ? 1 : y ? nt.call(y, n) - nt.call(y, t) : 0;
                if (o === h) return wi(n, t);
                for (i = n; i = i.parentNode;) f.unshift(i);
                for (i = t; i = i.parentNode;) e.unshift(i);
                while (f[u] === e[u]) u++;
                return u ? wi(f[u], e[u]) : f[u] === s ? -1 : e[u] === s ? 1 : 0
            },
            r) : e
        };
        r.matches = function(n, t) {
            return r(n, null, null, t)
        };
        r.matchesSelector = function(n, t) {
            if ((n.ownerDocument || n) !== e && p(n), t = t.replace(rr, "='$1']"), !(!u.matchesSelector || !a || g && g.test(t) || o && o.test(t))) try {
                var i = lt.call(n, t);
                if (i || u.disconnectedMatch || n.document && 11 !== n.document.nodeType) return i
            } catch(f) {}
            return r(t, e, null, [n]).length > 0
        };
        r.contains = function(n, t) {
            return (n.ownerDocument || n) !== e && p(n),
            ot(n, t)
        };
        r.attr = function(n, i) { (n.ownerDocument || n) !== e && p(n);
            var f = t.attrHandle[i.toLowerCase()],
            r = f && di.call(t.attrHandle, i.toLowerCase()) ? f(n, i, !a) : void 0;
            return void 0 !== r ? r: u.attributes || !a ? n.getAttribute(i) : (r = n.getAttributeNode(i)) && r.specified ? r.value: null
        };
        r.error = function(n) {
            throw new Error("Syntax error, unrecognized expression: " + n);
        };
        r.uniqueSort = function(n) {
            var r, f = [],
            t = 0,
            i = 0;
            if (rt = !u.detectDuplicates, y = !u.sortStable && n.slice(0), n.sort(bt), rt) {
                while (r = n[i++]) r === n[i] && (t = f.push(i));
                while (t--) n.splice(f[t], 1)
            }
            return y = null,
            n
        };
        ht = r.getText = function(n) {
            var r, i = "",
            u = 0,
            t = n.nodeType;
            if (t) {
                if (1 === t || 9 === t || 11 === t) {
                    if ("string" == typeof n.textContent) return n.textContent;
                    for (n = n.firstChild; n; n = n.nextSibling) i += ht(n)
                } else if (3 === t || 4 === t) return n.nodeValue
            } else while (r = n[u++]) i += ht(r);
            return i
        };
        t = r.selectors = {
            cacheLength: 50,
            createPseudo: h,
            match: vt,
            attrHandle: {},
            find: {},
            relative: {
                ">": {
                    dir: "parentNode",
                    first: !0
                },
                " ": {
                    dir: "parentNode"
                },
                "+": {
                    dir: "previousSibling",
                    first: !0
                },
                "~": {
                    dir: "previousSibling"
                }
            },
            preFilter: {
                ATTR: function(n) {
                    return n[1] = n[1].replace(k, d),
                    n[3] = (n[3] || n[4] || n[5] || "").replace(k, d),
                    "~=" === n[2] && (n[3] = " " + n[3] + " "),
                    n.slice(0, 4)
                },
                CHILD: function(n) {
                    return n[1] = n[1].toLowerCase(),
                    "nth" === n[1].slice(0, 3) ? (n[3] || r.error(n[0]), n[4] = +(n[4] ? n[5] + (n[6] || 1) : 2 * ("even" === n[3] || "odd" === n[3])), n[5] = +(n[7] + n[8] || "odd" === n[3])) : n[3] && r.error(n[0]),
                    n
                },
                PSEUDO: function(n) {
                    var i, t = !n[6] && n[2];
                    return vt.CHILD.test(n[0]) ? null: (n[3] ? n[2] = n[4] || n[5] || "": t && ur.test(t) && (i = et(t, !0)) && (i = t.indexOf(")", t.length - i) - t.length) && (n[0] = n[0].slice(0, i), n[2] = t.slice(0, i)), n.slice(0, 3))
                }
            },
            filter: {
                TAG: function(n) {
                    var t = n.replace(k, d).toLowerCase();
                    return "*" === n ?
                    function() {
                        return ! 0
                    }: function(n) {
                        return n.nodeName && n.nodeName.toLowerCase() === t
                    }
                },
                CLASS: function(n) {
                    var t = hi[n + " "];
                    return t || (t = new RegExp("(^|" + i + ")" + n + "(" + i + "|$)")) && hi(n,
                    function(n) {
                        return t.test("string" == typeof n.className && n.className || typeof n.getAttribute !== ut && n.getAttribute("class") || "")
                    })
                },
                ATTR: function(n, t, i) {
                    return function(u) {
                        var f = r.attr(u, n);
                        return null == f ? "!=" === t: t ? (f += "", "=" === t ? f === i: "!=" === t ? f !== i: "^=" === t ? i && 0 === f.indexOf(i) : "*=" === t ? i && f.indexOf(i) > -1 : "$=" === t ? i && f.slice( - i.length) === i: "~=" === t ? (" " + f + " ").indexOf(i) > -1 : "|=" === t ? f === i || f.slice(0, i.length + 1) === i + "-": !1) : !0
                    }
                },
                CHILD: function(n, t, i, r, u) {
                    var s = "nth" !== n.slice(0, 3),
                    o = "last" !== n.slice( - 4),
                    e = "of-type" === t;
                    return 1 === r && 0 === u ?
                    function(n) {
                        return !! n.parentNode
                    }: function(t, i, h) {
                        var a, k, c, l, y, w, b = s !== o ? "nextSibling": "previousSibling",
                        p = t.parentNode,
                        g = e && t.nodeName.toLowerCase(),
                        d = !h && !e;
                        if (p) {
                            if (s) {
                                while (b) {
                                    for (c = t; c = c[b];) if (e ? c.nodeName.toLowerCase() === g: 1 === c.nodeType) return ! 1;
                                    w = b = "only" === n && !w && "nextSibling"
                                }
                                return ! 0
                            }
                            if (w = [o ? p.firstChild: p.lastChild], o && d) {
                                for (k = p[f] || (p[f] = {}), a = k[n] || [], y = a[0] === v && a[1], l = a[0] === v && a[2], c = y && p.childNodes[y]; c = ++y && c && c[b] || (l = y = 0) || w.pop();) if (1 === c.nodeType && ++l && c === t) {
                                    k[n] = [v, y, l];
                                    break
                                }
                            } else if (d && (a = (t[f] || (t[f] = {}))[n]) && a[0] === v) l = a[1];
                            else while (c = ++y && c && c[b] || (l = y = 0) || w.pop()) if ((e ? c.nodeName.toLowerCase() === g: 1 === c.nodeType) && ++l && (d && ((c[f] || (c[f] = {}))[n] = [v, l]), c === t)) break;
                            return l -= u,
                            l === r || l % r == 0 && l / r >= 0
                        }
                    }
                },
                PSEUDO: function(n, i) {
                    var e, u = t.pseudos[n] || t.setFilters[n.toLowerCase()] || r.error("unsupported pseudo: " + n);
                    return u[f] ? u(i) : u.length > 1 ? (e = [n, n, "", i], t.setFilters.hasOwnProperty(n.toLowerCase()) ? h(function(n, t) {
                        for (var r, f = u(n, i), e = f.length; e--;) r = nt.call(n, f[e]),
                        n[r] = !(t[r] = f[e])
                    }) : function(n) {
                        return u(n, 0, e)
                    }) : u
                }
            },
            pseudos: {
                not: h(function(n) {
                    var i = [],
                    r = [],
                    t = wt(n.replace(at, "$1"));
                    return t[f] ? h(function(n, i, r, u) {
                        for (var e, o = t(n, null, u, []), f = n.length; f--;)(e = o[f]) && (n[f] = !(i[f] = e))
                    }) : function(n, u, f) {
                        return i[0] = n,
                        t(i, null, f, r),
                        !r.pop()
                    }
                }),
                has: h(function(n) {
                    return function(t) {
                        return r(n, t).length > 0
                    }
                }),
                contains: h(function(n) {
                    return function(t) {
                        return (t.textContent || t.innerText || ht(t)).indexOf(n) > -1
                    }
                }),
                lang: h(function(n) {
                    return fr.test(n || "") || r.error("unsupported lang: " + n),
                    n = n.replace(k, d).toLowerCase(),
                    function(t) {
                        var i;
                        do
                        if (i = a ? t.lang: t.getAttribute("xml:lang") || t.getAttribute("lang")) return i = i.toLowerCase(),
                        i === n || 0 === i.indexOf(n + "-");
                        while ((t = t.parentNode) && 1 === t.nodeType);
                        return ! 1
                    }
                }),
                target: function(t) {
                    var i = n.location && n.location.hash;
                    return i && i.slice(1) === t.id
                },
                root: function(n) {
                    return n === l
                },
                focus: function(n) {
                    return n === e.activeElement && (!e.hasFocus || e.hasFocus()) && !!(n.type || n.href || ~n.tabIndex)
                },
                enabled: function(n) {
                    return n.disabled === !1
                },
                disabled: function(n) {
                    return n.disabled === !0
                },
                checked: function(n) {
                    var t = n.nodeName.toLowerCase();
                    return "input" === t && !!n.checked || "option" === t && !!n.selected
                },
                selected: function(n) {
                    return n.parentNode && n.parentNode.selectedIndex,
                    n.selected === !0
                },
                empty: function(n) {
                    for (n = n.firstChild; n; n = n.nextSibling) if (n.nodeType < 6) return ! 1;
                    return ! 0
                },
                parent: function(n) {
                    return ! t.pseudos.empty(n)
                },
                header: function(n) {
                    return or.test(n.nodeName)
                },
                input: function(n) {
                    return er.test(n.nodeName)
                },
                button: function(n) {
                    var t = n.nodeName.toLowerCase();
                    return "input" === t && "button" === n.type || "button" === t
                },
                text: function(n) {
                    var t;
                    return "input" === n.nodeName.toLowerCase() && "text" === n.type && (null == (t = n.getAttribute("type")) || "text" === t.toLowerCase())
                },
                first: tt(function() {
                    return [0]
                }),
                last: tt(function(n, t) {
                    return [t - 1]
                }),
                eq: tt(function(n, t, i) {
                    return [0 > i ? i + t: i]
                }),
                even: tt(function(n, t) {
                    for (var i = 0; t > i; i += 2) n.push(i);
                    return n
                }),
                odd: tt(function(n, t) {
                    for (var i = 1; t > i; i += 2) n.push(i);
                    return n
                }),
                lt: tt(function(n, t, i) {
                    for (var r = 0 > i ? i + t: i; --r >= 0;) n.push(r);
                    return n
                }),
                gt: tt(function(n, t, i) {
                    for (var r = 0 > i ? i + t: i; ++r < t;) n.push(r);
                    return n
                })
            }
        };
        t.pseudos.nth = t.pseudos.eq;
        for (it in {
            radio: !0,
            checkbox: !0,
            file: !0,
            password: !0,
            image: !0
        }) t.pseudos[it] = cr(it);
        for (it in {
            submit: !0,
            reset: !0
        }) t.pseudos[it] = lr(it);
        return bi.prototype = t.filters = t.pseudos,
        t.setFilters = new bi,
        et = r.tokenize = function(n, i) {
            var e, f, s, o, u, h, c, l = ci[n + " "];
            if (l) return i ? 0 : l.slice(0);
            for (u = n, h = [], c = t.preFilter; u;) { (!e || (f = tr.exec(u))) && (f && (u = u.slice(f[0].length) || u), h.push(s = []));
                e = !1; (f = ir.exec(u)) && (e = f.shift(), s.push({
                    value: e,
                    type: f[0].replace(at, " ")
                }), u = u.slice(e.length));
                for (o in t.filter)(f = vt[o].exec(u)) && (!c[o] || (f = c[o](f))) && (e = f.shift(), s.push({
                    value: e,
                    type: o,
                    matches: f
                }), u = u.slice(e.length));
                if (!e) break
            }
            return i ? u.length: u ? r.error(n) : ci(n, h).slice(0)
        },
        wt = r.compile = function(n, t) {
            var r, u = [],
            e = [],
            i = li[n + " "];
            if (!i) {
                for (t || (t = et(n)), r = t.length; r--;) i = ei(t[r]),
                i[f] ? u.push(i) : e.push(i);
                i = li(n, vr(e, u));
                i.selector = n
            }
            return i
        },
        si = r.select = function(n, i, r, f) {
            var s, e, o, l, v, c = "function" == typeof n && n,
            h = !f && et(n = c.selector || n);
            if (r = r || [], 1 === h.length) {
                if (e = h[0] = h[0].slice(0), e.length > 2 && "ID" === (o = e[0]).type && u.getById && 9 === i.nodeType && a && t.relative[e[1].type]) {
                    if (i = (t.find.ID(o.matches[0].replace(k, d), i) || [])[0], !i) return r;
                    c && (i = i.parentNode);
                    n = n.slice(e.shift().value.length)
                }
                for (s = vt.needsContext.test(n) ? 0 : e.length; s--;) {
                    if (o = e[s], t.relative[l = o.type]) break;
                    if ((v = t.find[l]) && (f = v(o.matches[0].replace(k, d), gt.test(e[0].type) && ii(i.parentNode) || i))) {
                        if (e.splice(s, 1), n = f.length && yt(e), !n) return b.apply(r, f),
                        r;
                        break
                    }
                }
            }
            return (c || wt(n, h))(f, i, !a, r, gt.test(n) && ii(i.parentNode) || i),
            r
        },
        u.sortStable = f.split("").sort(bt).join("") === f,
        u.detectDuplicates = !!rt,
        p(),
        u.sortDetached = c(function(n) {
            return 1 & n.compareDocumentPosition(e.createElement("div"))
        }),
        c(function(n) {
            return n.innerHTML = "<a href='#'><\/a>",
            "#" === n.firstChild.getAttribute("href")
        }) || ti("type|href|height|width",
        function(n, t, i) {
            if (!i) return n.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
        }),
        u.attributes && c(function(n) {
            return n.innerHTML = "<input/>",
            n.firstChild.setAttribute("value", ""),
            "" === n.firstChild.getAttribute("value")
        }) || ti("value",
        function(n, t, i) {
            if (!i && "input" === n.nodeName.toLowerCase()) return n.defaultValue
        }),
        c(function(n) {
            return null == n.getAttribute("disabled")
        }) || ti(kt,
        function(n, t, i) {
            var r;
            if (!i) return n[t] === !0 ? t.toLowerCase() : (r = n.getAttributeNode(t)) && r.specified ? r.value: null
        }),
        r
    } (n);
    i.find = p;
    i.expr = p.selectors;
    i.expr[":"] = i.expr.pseudos;
    i.unique = p.uniqueSort;
    i.text = p.getText;
    i.isXMLDoc = p.isXML;
    i.contains = p.contains;
    var fr = i.expr.match.needsContext,
    er = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
    re = /^.[^:#\[\.,]*$/;
    i.filter = function(n, t, r) {
        var u = t[0];
        return r && (n = ":not(" + n + ")"),
        1 === t.length && 1 === u.nodeType ? i.find.matchesSelector(u, n) ? [u] : [] : i.find.matches(n, i.grep(t,
        function(n) {
            return 1 === n.nodeType
        }))
    };
    i.fn.extend({
        find: function(n) {
            var t, r = [],
            u = this,
            f = u.length;
            if ("string" != typeof n) return this.pushStack(i(n).filter(function() {
                for (t = 0; f > t; t++) if (i.contains(u[t], this)) return ! 0
            }));
            for (t = 0; f > t; t++) i.find(n, u[t], r);
            return r = this.pushStack(f > 1 ? i.unique(r) : r),
            r.selector = this.selector ? this.selector + " " + n: n,
            r
        },
        filter: function(n) {
            return this.pushStack(ui(this, n || [], !1))
        },
        not: function(n) {
            return this.pushStack(ui(this, n || [], !0))
        },
        is: function(n) {
            return !! ui(this, "string" == typeof n && fr.test(n) ? i(n) : n || [], !1).length
        }
    });
    var ft, u = n.document,
    ue = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
    fe = i.fn.init = function(n, t) {
        var r, f;
        if (!n) return this;
        if ("string" == typeof n) {
            if (r = "<" === n.charAt(0) && ">" === n.charAt(n.length - 1) && n.length >= 3 ? [null, n, null] : ue.exec(n), !r || !r[1] && t) return ! t || t.jquery ? (t || ft).find(n) : this.constructor(t).find(n);
            if (r[1]) {
                if (t = t instanceof i ? t[0] : t, i.merge(this, i.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t: u, !0)), er.test(r[1]) && i.isPlainObject(t)) for (r in t) i.isFunction(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
                return this
            }
            if (f = u.getElementById(r[2]), f && f.parentNode) {
                if (f.id !== r[2]) return ft.find(n);
                this.length = 1;
                this[0] = f
            }
            return this.context = u,
            this.selector = n,
            this
        }
        return n.nodeType ? (this.context = this[0] = n, this.length = 1, this) : i.isFunction(n) ? "undefined" != typeof ft.ready ? ft.ready(n) : n(i) : (void 0 !== n.selector && (this.selector = n.selector, this.context = n.context), i.makeArray(n, this))
    };
    fe.prototype = i.fn;
    ft = i(u);
    or = /^(?:parents|prev(?:Until|All))/;
    sr = {
        children: !0,
        contents: !0,
        next: !0,
        prev: !0
    };
    i.extend({
        dir: function(n, t, r) {
            for (var f = [], u = n[t]; u && 9 !== u.nodeType && (void 0 === r || 1 !== u.nodeType || !i(u).is(r));) 1 === u.nodeType && f.push(u),
            u = u[t];
            return f
        },
        sibling: function(n, t) {
            for (var i = []; n; n = n.nextSibling) 1 === n.nodeType && n !== t && i.push(n);
            return i
        }
    });
    i.fn.extend({
        has: function(n) {
            var t, r = i(n, this),
            u = r.length;
            return this.filter(function() {
                for (t = 0; u > t; t++) if (i.contains(this, r[t])) return ! 0
            })
        },
        closest: function(n, t) {
            for (var r, f = 0,
            o = this.length,
            u = [], e = fr.test(n) || "string" != typeof n ? i(n, t || this.context) : 0; o > f; f++) for (r = this[f]; r && r !== t; r = r.parentNode) if (r.nodeType < 11 && (e ? e.index(r) > -1 : 1 === r.nodeType && i.find.matchesSelector(r, n))) {
                u.push(r);
                break
            }
            return this.pushStack(u.length > 1 ? i.unique(u) : u)
        },
        index: function(n) {
            return n ? "string" == typeof n ? i.inArray(this[0], i(n)) : i.inArray(n.jquery ? n[0] : n, this) : this[0] && this[0].parentNode ? this.first().prevAll().length: -1
        },
        add: function(n, t) {
            return this.pushStack(i.unique(i.merge(this.get(), i(n, t))))
        },
        addBack: function(n) {
            return this.add(null == n ? this.prevObject: this.prevObject.filter(n))
        }
    });
    i.each({
        parent: function(n) {
            var t = n.parentNode;
            return t && 11 !== t.nodeType ? t: null
        },
        parents: function(n) {
            return i.dir(n, "parentNode")
        },
        parentsUntil: function(n, t, r) {
            return i.dir(n, "parentNode", r)
        },
        next: function(n) {
            return hr(n, "nextSibling")
        },
        prev: function(n) {
            return hr(n, "previousSibling")
        },
        nextAll: function(n) {
            return i.dir(n, "nextSibling")
        },
        prevAll: function(n) {
            return i.dir(n, "previousSibling")
        },
        nextUntil: function(n, t, r) {
            return i.dir(n, "nextSibling", r)
        },
        prevUntil: function(n, t, r) {
            return i.dir(n, "previousSibling", r)
        },
        siblings: function(n) {
            return i.sibling((n.parentNode || {}).firstChild, n)
        },
        children: function(n) {
            return i.sibling(n.firstChild)
        },
        contents: function(n) {
            return i.nodeName(n, "iframe") ? n.contentDocument || n.contentWindow.document: i.merge([], n.childNodes)
        }
    },
    function(n, t) {
        i.fn[n] = function(r, u) {
            var f = i.map(this, t, r);
            return "Until" !== n.slice( - 5) && (u = r),
            u && "string" == typeof u && (f = i.filter(u, f)),
            this.length > 1 && (sr[n] || (f = i.unique(f)), or.test(n) && (f = f.reverse())),
            this.pushStack(f)
        }
    });
    h = /\S+/g;
    fi = {};
    i.Callbacks = function(n) {
        n = "string" == typeof n ? fi[n] || ee(n) : i.extend({},
        n);
        var o, u, h, f, e, c, t = [],
        r = !n.once && [],
        l = function(i) {
            for (u = n.memory && i, h = !0, e = c || 0, c = 0, f = t.length, o = !0; t && f > e; e++) if (t[e].apply(i[0], i[1]) === !1 && n.stopOnFalse) {
                u = !1;
                break
            }
            o = !1;
            t && (r ? r.length && l(r.shift()) : u ? t = [] : s.disable())
        },
        s = {
            add: function() {
                if (t) {
                    var r = t.length; !
                    function e(r) {
                        i.each(r,
                        function(r, u) {
                            var f = i.type(u);
                            "function" === f ? n.unique && s.has(u) || t.push(u) : u && u.length && "string" !== f && e(u)
                        })
                    } (arguments);
                    o ? f = t.length: u && (c = r, l(u))
                }
                return this
            },
            remove: function() {
                return t && i.each(arguments,
                function(n, r) {
                    for (var u; (u = i.inArray(r, t, u)) > -1;) t.splice(u, 1),
                    o && (f >= u && f--, e >= u && e--)
                }),
                this
            },
            has: function(n) {
                return n ? i.inArray(n, t) > -1 : !(!t || !t.length)
            },
            empty: function() {
                return t = [],
                f = 0,
                this
            },
            disable: function() {
                return t = r = u = void 0,
                this
            },
            disabled: function() {
                return ! t
            },
            lock: function() {
                return r = void 0,
                u || s.disable(),
                this
            },
            locked: function() {
                return ! r
            },
            fireWith: function(n, i) {
                return ! t || h && !r || (i = i || [], i = [n, i.slice ? i.slice() : i], o ? r.push(i) : l(i)),
                this
            },
            fire: function() {
                return s.fireWith(this, arguments),
                this
            },
            fired: function() {
                return !! h
            }
        };
        return s
    };
    i.extend({
        Deferred: function(n) {
            var u = [["resolve", "done", i.Callbacks("once memory"), "resolved"], ["reject", "fail", i.Callbacks("once memory"), "rejected"], ["notify", "progress", i.Callbacks("memory")]],
            f = "pending",
            r = {
                state: function() {
                    return f
                },
                always: function() {
                    return t.done(arguments).fail(arguments),
                    this
                },
                then: function() {
                    var n = arguments;
                    return i.Deferred(function(f) {
                        i.each(u,
                        function(u, e) {
                            var o = i.isFunction(n[u]) && n[u];
                            t[e[1]](function() {
                                var n = o && o.apply(this, arguments);
                                n && i.isFunction(n.promise) ? n.promise().done(f.resolve).fail(f.reject).progress(f.notify) : f[e[0] + "With"](this === r ? f.promise() : this, o ? [n] : arguments)
                            })
                        });
                        n = null
                    }).promise()
                },
                promise: function(n) {
                    return null != n ? i.extend(n, r) : r
                }
            },
            t = {};
            return r.pipe = r.then,
            i.each(u,
            function(n, i) {
                var e = i[2],
                o = i[3];
                r[i[1]] = e.add;
                o && e.add(function() {
                    f = o
                },
                u[1 ^ n][2].disable, u[2][2].lock);
                t[i[0]] = function() {
                    return t[i[0] + "With"](this === t ? r: this, arguments),
                    this
                };
                t[i[0] + "With"] = e.fireWith
            }),
            r.promise(t),
            n && n.call(t, t),
            t
        },
        when: function(n) {
            var t = 0,
            u = l.call(arguments),
            r = u.length,
            e = 1 !== r || n && i.isFunction(n.promise) ? r: 0,
            f = 1 === e ? n: i.Deferred(),
            h = function(n, t, i) {
                return function(r) {
                    t[n] = this;
                    i[n] = arguments.length > 1 ? l.call(arguments) : r;
                    i === o ? f.notifyWith(t, i) : --e || f.resolveWith(t, i)
                }
            },
            o,
            c,
            s;
            if (r > 1) for (o = new Array(r), c = new Array(r), s = new Array(r); r > t; t++) u[t] && i.isFunction(u[t].promise) ? u[t].promise().done(h(t, s, u)).fail(f.reject).progress(h(t, c, o)) : --e;
            return e || f.resolveWith(s, u),
            f.promise()
        }
    });
    i.fn.ready = function(n) {
        return i.ready.promise().done(n),
        this
    };
    i.extend({
        isReady: !1,
        readyWait: 1,
        holdReady: function(n) {
            n ? i.readyWait++:i.ready(!0)
        },
        ready: function(n) {
            if (n === !0 ? !--i.readyWait: !i.isReady) {
                if (!u.body) return setTimeout(i.ready);
                i.isReady = !0;
                n !== !0 && --i.readyWait > 0 || (lt.resolveWith(u, [i]), i.fn.triggerHandler && (i(u).triggerHandler("ready"), i(u).off("ready")))
            }
        }
    });
    i.ready.promise = function(t) {
        if (!lt) if (lt = i.Deferred(), "complete" === u.readyState) setTimeout(i.ready);
        else if (u.addEventListener) u.addEventListener("DOMContentLoaded", a, !1),
        n.addEventListener("load", a, !1);
        else {
            u.attachEvent("onreadystatechange", a);
            n.attachEvent("onload", a);
            var r = !1;
            try {
                r = null == n.frameElement && u.documentElement
            } catch(e) {}
            r && r.doScroll && !
            function f() {
                if (!i.isReady) {
                    try {
                        r.doScroll("left")
                    } catch(n) {
                        return setTimeout(f, 50)
                    }
                    cr();
                    i.ready()
                }
            } ()
        }
        return lt.promise(t)
    };
    o = "undefined";
    for (lr in i(r)) break;
    r.ownLast = "0" !== lr;
    r.inlineBlockNeedsLayout = !1;
    i(function() {
        var f, t, n, i;
        n = u.getElementsByTagName("body")[0];
        n && n.style && (t = u.createElement("div"), i = u.createElement("div"), i.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", n.appendChild(i).appendChild(t), typeof t.style.zoom !== o && (t.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1", r.inlineBlockNeedsLayout = f = 3 === t.offsetWidth, f && (n.style.zoom = 1)), n.removeChild(i))
    }),
    function() {
        var n = u.createElement("div");
        if (null == r.deleteExpando) {
            r.deleteExpando = !0;
            try {
                delete n.test
            } catch(t) {
                r.deleteExpando = !1
            }
        }
        n = null
    } ();
    i.acceptData = function(n) {
        var t = i.noData[(n.nodeName + " ").toLowerCase()],
        r = +n.nodeType || 1;
        return 1 !== r && 9 !== r ? !1 : !t || t !== !0 && n.getAttribute("classid") === t
    };
    ar = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/;
    vr = /([A-Z])/g;
    i.extend({
        cache: {},
        noData: {
            "applet ": !0,
            "embed ": !0,
            "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        },
        hasData: function(n) {
            return n = n.nodeType ? i.cache[n[i.expando]] : n[i.expando],
            !!n && !ei(n)
        },
        data: function(n, t, i) {
            return pr(n, t, i)
        },
        removeData: function(n, t) {
            return wr(n, t)
        },
        _data: function(n, t, i) {
            return pr(n, t, i, !0)
        },
        _removeData: function(n, t) {
            return wr(n, t, !0)
        }
    });
    i.fn.extend({
        data: function(n, t) {
            var f, u, e, r = this[0],
            o = r && r.attributes;
            if (void 0 === n) {
                if (this.length && (e = i.data(r), 1 === r.nodeType && !i._data(r, "parsedAttrs"))) {
                    for (f = o.length; f--;) o[f] && (u = o[f].name, 0 === u.indexOf("data-") && (u = i.camelCase(u.slice(5)), yr(r, u, e[u])));
                    i._data(r, "parsedAttrs", !0)
                }
                return e
            }
            return "object" == typeof n ? this.each(function() {
                i.data(this, n)
            }) : arguments.length > 1 ? this.each(function() {
                i.data(this, n, t)
            }) : r ? yr(r, n, i.data(r, n)) : void 0
        },
        removeData: function(n) {
            return this.each(function() {
                i.removeData(this, n)
            })
        }
    });
    i.extend({
        queue: function(n, t, r) {
            var u;
            if (n) return (t = (t || "fx") + "queue", u = i._data(n, t), r && (!u || i.isArray(r) ? u = i._data(n, t, i.makeArray(r)) : u.push(r)), u || [])
        },
        dequeue: function(n, t) {
            t = t || "fx";
            var r = i.queue(n, t),
            e = r.length,
            u = r.shift(),
            f = i._queueHooks(n, t),
            o = function() {
                i.dequeue(n, t)
            };
            "inprogress" === u && (u = r.shift(), e--);
            u && ("fx" === t && r.unshift("inprogress"), delete f.stop, u.call(n, o, f)); ! e && f && f.empty.fire()
        },
        _queueHooks: function(n, t) {
            var r = t + "queueHooks";
            return i._data(n, r) || i._data(n, r, {
                empty: i.Callbacks("once memory").add(function() {
                    i._removeData(n, t + "queue");
                    i._removeData(n, r)
                })
            })
        }
    });
    i.fn.extend({
        queue: function(n, t) {
            var r = 2;
            return "string" != typeof n && (t = n, n = "fx", r--),
            arguments.length < r ? i.queue(this[0], n) : void 0 === t ? this: this.each(function() {
                var r = i.queue(this, n, t);
                i._queueHooks(this, n);
                "fx" === n && "inprogress" !== r[0] && i.dequeue(this, n)
            })
        },
        dequeue: function(n) {
            return this.each(function() {
                i.dequeue(this, n)
            })
        },
        clearQueue: function(n) {
            return this.queue(n || "fx", [])
        },
        promise: function(n, t) {
            var r, f = 1,
            e = i.Deferred(),
            u = this,
            o = this.length,
            s = function() {--f || e.resolveWith(u, [u])
            };
            for ("string" != typeof n && (t = n, n = void 0), n = n || "fx"; o--;) r = i._data(u[o], n + "queueHooks"),
            r && r.empty && (f++, r.empty.add(s));
            return s(),
            e.promise(t)
        }
    });
    var at = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
    w = ["Top", "Right", "Bottom", "Left"],
    et = function(n, t) {
        return n = t || n,
        "none" === i.css(n, "display") || !i.contains(n.ownerDocument, n)
    },
    b = i.access = function(n, t, r, u, f, e, o) {
        var s = 0,
        c = n.length,
        h = null == r;
        if ("object" === i.type(r)) {
            f = !0;
            for (s in r) i.access(n, t, s, r[s], !0, e, o)
        } else if (void 0 !== u && (f = !0, i.isFunction(u) || (o = !0), h && (o ? (t.call(n, u), t = null) : (h = t, t = function(n, t, r) {
            return h.call(i(n), r)
        })), t)) for (; c > s; s++) t(n[s], r, o ? u: u.call(n[s], s, t(n[s], r)));
        return f ? n: h ? t.call(n) : c ? t(n[0], r) : e
    },
    oi = /^(?:checkbox|radio)$/i; !
    function() {
        var t = u.createElement("input"),
        n = u.createElement("div"),
        i = u.createDocumentFragment();
        if (n.innerHTML = "  <link/><table><\/table><a href='/a'>a<\/a><input type='checkbox'/>", r.leadingWhitespace = 3 === n.firstChild.nodeType, r.tbody = !n.getElementsByTagName("tbody").length, r.htmlSerialize = !!n.getElementsByTagName("link").length, r.html5Clone = "<:nav><\/:nav>" !== u.createElement("nav").cloneNode(!0).outerHTML, t.type = "checkbox", t.checked = !0, i.appendChild(t), r.appendChecked = t.checked, n.innerHTML = "<textarea>x<\/textarea>", r.noCloneChecked = !!n.cloneNode(!0).lastChild.defaultValue, i.appendChild(n), n.innerHTML = "<input type='radio' checked='checked' name='t'/>", r.checkClone = n.cloneNode(!0).cloneNode(!0).lastChild.checked, r.noCloneEvent = !0, n.attachEvent && (n.attachEvent("onclick",
        function() {
            r.noCloneEvent = !1
        }), n.cloneNode(!0).click()), null == r.deleteExpando) {
            r.deleteExpando = !0;
            try {
                delete n.test
            } catch(f) {
                r.deleteExpando = !1
            }
        }
    } (),
    function() {
        var t, i, f = u.createElement("div");
        for (t in {
            submit: !0,
            change: !0,
            focusin: !0
        }) i = "on" + t,
        (r[t + "Bubbles"] = i in n) || (f.setAttribute(i, "t"), r[t + "Bubbles"] = f.attributes[i].expando === !1);
        f = null
    } ();
    var si = /^(?:input|select|textarea)$/i,
    oe = /^key/,
    se = /^(?:mouse|pointer|contextmenu)|click/,
    br = /^(?:focusinfocus|focusoutblur)$/,
    kr = /^([^.]*)(?:\.(.+)|)$/;
    i.event = {
        global: {},
        add: function(n, t, r, u, f) {
            var w, y, b, p, s, c, l, a, e, k, d, v = i._data(n);
            if (v) {
                for (r.handler && (p = r, r = p.handler, f = p.selector), r.guid || (r.guid = i.guid++), (y = v.events) || (y = v.events = {}), (c = v.handle) || (c = v.handle = function(n) {
                    if (typeof i !== o && (!n || i.event.triggered !== n.type)) return i.event.dispatch.apply(c.elem, arguments)
                },
                c.elem = n), t = (t || "").match(h) || [""], b = t.length; b--;) w = kr.exec(t[b]) || [],
                e = d = w[1],
                k = (w[2] || "").split(".").sort(),
                e && (s = i.event.special[e] || {},
                e = (f ? s.delegateType: s.bindType) || e, s = i.event.special[e] || {},
                l = i.extend({
                    type: e,
                    origType: d,
                    data: u,
                    handler: r,
                    guid: r.guid,
                    selector: f,
                    needsContext: f && i.expr.match.needsContext.test(f),
                    namespace: k.join(".")
                },
                p), (a = y[e]) || (a = y[e] = [], a.delegateCount = 0, s.setup && s.setup.call(n, u, k, c) !== !1 || (n.addEventListener ? n.addEventListener(e, c, !1) : n.attachEvent && n.attachEvent("on" + e, c))), s.add && (s.add.call(n, l), l.handler.guid || (l.handler.guid = r.guid)), f ? a.splice(a.delegateCount++, 0, l) : a.push(l), i.event.global[e] = !0);
                n = null
            }
        },
        remove: function(n, t, r, u, f) {
            var y, o, s, b, p, a, c, l, e, w, k, v = i.hasData(n) && i._data(n);
            if (v && (a = v.events)) {
                for (t = (t || "").match(h) || [""], p = t.length; p--;) if (s = kr.exec(t[p]) || [], e = k = s[1], w = (s[2] || "").split(".").sort(), e) {
                    for (c = i.event.special[e] || {},
                    e = (u ? c.delegateType: c.bindType) || e, l = a[e] || [], s = s[2] && new RegExp("(^|\\.)" + w.join("\\.(?:.*\\.|)") + "(\\.|$)"), b = y = l.length; y--;) o = l[y],
                    !f && k !== o.origType || r && r.guid !== o.guid || s && !s.test(o.namespace) || u && u !== o.selector && ("**" !== u || !o.selector) || (l.splice(y, 1), o.selector && l.delegateCount--, c.remove && c.remove.call(n, o));
                    b && !l.length && (c.teardown && c.teardown.call(n, w, v.handle) !== !1 || i.removeEvent(n, e, v.handle), delete a[e])
                } else for (e in a) i.event.remove(n, e + t[p], r, u, !0);
                i.isEmptyObject(a) && (delete v.handle, i._removeData(n, "events"))
            }
        },
        trigger: function(t, r, f, e) {
            var l, a, o, p, c, h, w, y = [f || u],
            s = tt.call(t, "type") ? t.type: t,
            v = tt.call(t, "namespace") ? t.namespace.split(".") : [];
            if (o = h = f = f || u, 3 !== f.nodeType && 8 !== f.nodeType && !br.test(s + i.event.triggered) && (s.indexOf(".") >= 0 && (v = s.split("."), s = v.shift(), v.sort()), a = s.indexOf(":") < 0 && "on" + s, t = t[i.expando] ? t: new i.Event(s, "object" == typeof t && t), t.isTrigger = e ? 2 : 3, t.namespace = v.join("."), t.namespace_re = t.namespace ? new RegExp("(^|\\.)" + v.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = f), r = null == r ? [t] : i.makeArray(r, [t]), c = i.event.special[s] || {},
            e || !c.trigger || c.trigger.apply(f, r) !== !1)) {
                if (!e && !c.noBubble && !i.isWindow(f)) {
                    for (p = c.delegateType || s, br.test(p + s) || (o = o.parentNode); o; o = o.parentNode) y.push(o),
                    h = o;
                    h === (f.ownerDocument || u) && y.push(h.defaultView || h.parentWindow || n)
                }
                for (w = 0; (o = y[w++]) && !t.isPropagationStopped();) t.type = w > 1 ? p: c.bindType || s,
                l = (i._data(o, "events") || {})[t.type] && i._data(o, "handle"),
                l && l.apply(o, r),
                l = a && o[a],
                l && l.apply && i.acceptData(o) && (t.result = l.apply(o, r), t.result === !1 && t.preventDefault());
                if (t.type = s, !e && !t.isDefaultPrevented() && (!c._default || c._default.apply(y.pop(), r) === !1) && i.acceptData(f) && a && f[s] && !i.isWindow(f)) {
                    h = f[a];
                    h && (f[a] = null);
                    i.event.triggered = s;
                    try {
                        f[s]()
                    } catch(b) {}
                    i.event.triggered = void 0;
                    h && (f[a] = h)
                }
                return t.result
            }
        },
        dispatch: function(n) {
            n = i.event.fix(n);
            var e, f, t, r, o, s = [],
            h = l.call(arguments),
            c = (i._data(this, "events") || {})[n.type] || [],
            u = i.event.special[n.type] || {};
            if (h[0] = n, n.delegateTarget = this, !u.preDispatch || u.preDispatch.call(this, n) !== !1) {
                for (s = i.event.handlers.call(this, n, c), e = 0; (r = s[e++]) && !n.isPropagationStopped();) for (n.currentTarget = r.elem, o = 0; (t = r.handlers[o++]) && !n.isImmediatePropagationStopped();)(!n.namespace_re || n.namespace_re.test(t.namespace)) && (n.handleObj = t, n.data = t.data, f = ((i.event.special[t.origType] || {}).handle || t.handler).apply(r.elem, h), void 0 !== f && (n.result = f) === !1 && (n.preventDefault(), n.stopPropagation()));
                return u.postDispatch && u.postDispatch.call(this, n),
                n.result
            }
        },
        handlers: function(n, t) {
            var f, e, u, o, h = [],
            s = t.delegateCount,
            r = n.target;
            if (s && r.nodeType && (!n.button || "click" !== n.type)) for (; r != this; r = r.parentNode || this) if (1 === r.nodeType && (r.disabled !== !0 || "click" !== n.type)) {
                for (u = [], o = 0; s > o; o++) e = t[o],
                f = e.selector + " ",
                void 0 === u[f] && (u[f] = e.needsContext ? i(f, this).index(r) >= 0 : i.find(f, this, null, [r]).length),
                u[f] && u.push(e);
                u.length && h.push({
                    elem: r,
                    handlers: u
                })
            }
            return s < t.length && h.push({
                elem: this,
                handlers: t.slice(s)
            }),
            h
        },
        fix: function(n) {
            if (n[i.expando]) return n;
            var e, o, s, r = n.type,
            f = n,
            t = this.fixHooks[r];
            for (t || (this.fixHooks[r] = t = se.test(r) ? this.mouseHooks: oe.test(r) ? this.keyHooks: {}), s = t.props ? this.props.concat(t.props) : this.props, n = new i.Event(f), e = s.length; e--;) o = s[e],
            n[o] = f[o];
            return n.target || (n.target = f.srcElement || u),
            3 === n.target.nodeType && (n.target = n.target.parentNode),
            n.metaKey = !!n.metaKey,
            t.filter ? t.filter(n, f) : n
        },
        props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
        fixHooks: {},
        keyHooks: {
            props: "char charCode key keyCode".split(" "),
            filter: function(n, t) {
                return null == n.which && (n.which = null != t.charCode ? t.charCode: t.keyCode),
                n
            }
        },
        mouseHooks: {
            props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
            filter: function(n, t) {
                var i, e, r, f = t.button,
                o = t.fromElement;
                return null == n.pageX && null != t.clientX && (e = n.target.ownerDocument || u, r = e.documentElement, i = e.body, n.pageX = t.clientX + (r && r.scrollLeft || i && i.scrollLeft || 0) - (r && r.clientLeft || i && i.clientLeft || 0), n.pageY = t.clientY + (r && r.scrollTop || i && i.scrollTop || 0) - (r && r.clientTop || i && i.clientTop || 0)),
                !n.relatedTarget && o && (n.relatedTarget = o === n.target ? t.toElement: o),
                n.which || void 0 === f || (n.which = 1 & f ? 1 : 2 & f ? 3 : 4 & f ? 2 : 0),
                n
            }
        },
        special: {
            load: {
                noBubble: !0
            },
            focus: {
                trigger: function() {
                    if (this !== dr() && this.focus) try {
                        return this.focus(),
                        !1
                    } catch(n) {}
                },
                delegateType: "focusin"
            },
            blur: {
                trigger: function() {
                    if (this === dr() && this.blur) return (this.blur(), !1)
                },
                delegateType: "focusout"
            },
            click: {
                trigger: function() {
                    if (i.nodeName(this, "input") && "checkbox" === this.type && this.click) return (this.click(), !1)
                },
                _default: function(n) {
                    return i.nodeName(n.target, "a")
                }
            },
            beforeunload: {
                postDispatch: function(n) {
                    void 0 !== n.result && n.originalEvent && (n.originalEvent.returnValue = n.result)
                }
            }
        },
        simulate: function(n, t, r, u) {
            var f = i.extend(new i.Event, r, {
                type: n,
                isSimulated: !0,
                originalEvent: {}
            });
            u ? i.event.trigger(f, null, t) : i.event.dispatch.call(t, f);
            f.isDefaultPrevented() && r.preventDefault()
        }
    };
    i.removeEvent = u.removeEventListener ?
    function(n, t, i) {
        n.removeEventListener && n.removeEventListener(t, i, !1)
    }: function(n, t, i) {
        var r = "on" + t;
        n.detachEvent && (typeof n[r] === o && (n[r] = null), n.detachEvent(r, i))
    };
    i.Event = function(n, t) {
        return this instanceof i.Event ? (n && n.type ? (this.originalEvent = n, this.type = n.type, this.isDefaultPrevented = n.defaultPrevented || void 0 === n.defaultPrevented && n.returnValue === !1 ? vt: it) : this.type = n, t && i.extend(this, t), this.timeStamp = n && n.timeStamp || i.now(), void(this[i.expando] = !0)) : new i.Event(n, t)
    };
    i.Event.prototype = {
        isDefaultPrevented: it,
        isPropagationStopped: it,
        isImmediatePropagationStopped: it,
        preventDefault: function() {
            var n = this.originalEvent;
            this.isDefaultPrevented = vt;
            n && (n.preventDefault ? n.preventDefault() : n.returnValue = !1)
        },
        stopPropagation: function() {
            var n = this.originalEvent;
            this.isPropagationStopped = vt;
            n && (n.stopPropagation && n.stopPropagation(), n.cancelBubble = !0)
        },
        stopImmediatePropagation: function() {
            var n = this.originalEvent;
            this.isImmediatePropagationStopped = vt;
            n && n.stopImmediatePropagation && n.stopImmediatePropagation();
            this.stopPropagation()
        }
    };
    i.each({
        mouseenter: "mouseover",
        mouseleave: "mouseout",
        pointerenter: "pointerover",
        pointerleave: "pointerout"
    },
    function(n, t) {
        i.event.special[n] = {
            delegateType: t,
            bindType: t,
            handle: function(n) {
                var u, f = this,
                r = n.relatedTarget,
                e = n.handleObj;
                return (!r || r !== f && !i.contains(f, r)) && (n.type = e.origType, u = e.handler.apply(this, arguments), n.type = t),
                u
            }
        }
    });
    r.submitBubbles || (i.event.special.submit = {
        setup: function() {
            return i.nodeName(this, "form") ? !1 : void i.event.add(this, "click._submit keypress._submit",
            function(n) {
                var r = n.target,
                t = i.nodeName(r, "input") || i.nodeName(r, "button") ? r.form: void 0;
                t && !i._data(t, "submitBubbles") && (i.event.add(t, "submit._submit",
                function(n) {
                    n._submit_bubble = !0
                }), i._data(t, "submitBubbles", !0))
            })
        },
        postDispatch: function(n) {
            n._submit_bubble && (delete n._submit_bubble, this.parentNode && !n.isTrigger && i.event.simulate("submit", this.parentNode, n, !0))
        },
        teardown: function() {
            return i.nodeName(this, "form") ? !1 : void i.event.remove(this, "._submit")
        }
    });
    r.changeBubbles || (i.event.special.change = {
        setup: function() {
            return si.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (i.event.add(this, "propertychange._change",
            function(n) {
                "checked" === n.originalEvent.propertyName && (this._just_changed = !0)
            }), i.event.add(this, "click._change",
            function(n) {
                this._just_changed && !n.isTrigger && (this._just_changed = !1);
                i.event.simulate("change", this, n, !0)
            })), !1) : void i.event.add(this, "beforeactivate._change",
            function(n) {
                var t = n.target;
                si.test(t.nodeName) && !i._data(t, "changeBubbles") && (i.event.add(t, "change._change",
                function(n) { ! this.parentNode || n.isSimulated || n.isTrigger || i.event.simulate("change", this.parentNode, n, !0)
                }), i._data(t, "changeBubbles", !0))
            })
        },
        handle: function(n) {
            var t = n.target;
            if (this !== t || n.isSimulated || n.isTrigger || "radio" !== t.type && "checkbox" !== t.type) return n.handleObj.handler.apply(this, arguments)
        },
        teardown: function() {
            return i.event.remove(this, "._change"),
            !si.test(this.nodeName)
        }
    });
    r.focusinBubbles || i.each({
        focus: "focusin",
        blur: "focusout"
    },
    function(n, t) {
        var r = function(n) {
            i.event.simulate(t, n.target, i.event.fix(n), !0)
        };
        i.event.special[t] = {
            setup: function() {
                var u = this.ownerDocument || this,
                f = i._data(u, t);
                f || u.addEventListener(n, r, !0);
                i._data(u, t, (f || 0) + 1)
            },
            teardown: function() {
                var u = this.ownerDocument || this,
                f = i._data(u, t) - 1;
                f ? i._data(u, t, f) : (u.removeEventListener(n, r, !0), i._removeData(u, t))
            }
        }
    });
    i.fn.extend({
        on: function(n, t, r, u, f) {
            var o, e;
            if ("object" == typeof n) {
                "string" != typeof t && (r = r || t, t = void 0);
                for (o in n) this.on(o, t, r, n[o], f);
                return this
            }
            if (null == r && null == u ? (u = t, r = t = void 0) : null == u && ("string" == typeof t ? (u = r, r = void 0) : (u = r, r = t, t = void 0)), u === !1) u = it;
            else if (!u) return this;
            return 1 === f && (e = u, u = function(n) {
                return i().off(n),
                e.apply(this, arguments)
            },
            u.guid = e.guid || (e.guid = i.guid++)),
            this.each(function() {
                i.event.add(this, n, u, r, t)
            })
        },
        one: function(n, t, i, r) {
            return this.on(n, t, i, r, 1)
        },
        off: function(n, t, r) {
            var u, f;
            if (n && n.preventDefault && n.handleObj) return u = n.handleObj,
            i(n.delegateTarget).off(u.namespace ? u.origType + "." + u.namespace: u.origType, u.selector, u.handler),
            this;
            if ("object" == typeof n) {
                for (f in n) this.off(f, t, n[f]);
                return this
            }
            return (t === !1 || "function" == typeof t) && (r = t, t = void 0),
            r === !1 && (r = it),
            this.each(function() {
                i.event.remove(this, n, r, t)
            })
        },
        trigger: function(n, t) {
            return this.each(function() {
                i.event.trigger(n, t, this)
            })
        },
        triggerHandler: function(n, t) {
            var r = this[0];
            if (r) return i.event.trigger(n, t, r, !0)
        }
    });
    var nu = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
    he = / jQuery\d+="(?:null|\d+)"/g,
    tu = new RegExp("<(?:" + nu + ")[\\s/>]", "i"),
    hi = /^\s+/,
    iu = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
    ru = /<([\w:]+)/,
    uu = /<tbody/i,
    ce = /<|&#?\w+;/,
    le = /<(?:script|style|link)/i,
    ae = /checked\s*(?:[^=]|=\s*.checked.)/i,
    fu = /^$|\/(?:java|ecma)script/i,
    ve = /^true\/(.*)/,
    ye = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
    s = {
        option: [1, "<select multiple='multiple'>", "<\/select>"],
        legend: [1, "<fieldset>", "<\/fieldset>"],
        area: [1, "<map>", "<\/map>"],
        param: [1, "<object>", "<\/object>"],
        thead: [1, "<table>", "<\/table>"],
        tr: [2, "<table><tbody>", "<\/tbody><\/table>"],
        col: [2, "<table><tbody><\/tbody><colgroup>", "<\/colgroup><\/table>"],
        td: [3, "<table><tbody><tr>", "<\/tr><\/tbody><\/table>"],
        _default: r.htmlSerialize ? [0, "", ""] : [1, "X<div>", "<\/div>"]
    },
    pe = gr(u),
    ci = pe.appendChild(u.createElement("div"));
    s.optgroup = s.option;
    s.tbody = s.tfoot = s.colgroup = s.caption = s.thead;
    s.th = s.td;
    i.extend({
        clone: function(n, t, u) {
            var e, c, s, o, h, l = i.contains(n.ownerDocument, n);
            if (r.html5Clone || i.isXMLDoc(n) || !tu.test("<" + n.nodeName + ">") ? s = n.cloneNode(!0) : (ci.innerHTML = n.outerHTML, ci.removeChild(s = ci.firstChild)), !(r.noCloneEvent && r.noCloneChecked || 1 !== n.nodeType && 11 !== n.nodeType || i.isXMLDoc(n))) for (e = f(s), h = f(n), o = 0; null != (c = h[o]); ++o) e[o] && be(c, e[o]);
            if (t) if (u) for (h = h || f(n), e = e || f(s), o = 0; null != (c = h[o]); o++) hu(c, e[o]);
            else hu(n, s);
            return e = f(s, "script"),
            e.length > 0 && li(e, !l && f(n, "script")),
            e = h = c = null,
            s
        },
        buildFragment: function(n, t, u, e) {
            for (var c, o, b, h, p, w, a, k = n.length,
            v = gr(t), l = [], y = 0; k > y; y++) if (o = n[y], o || 0 === o) if ("object" === i.type(o)) i.merge(l, o.nodeType ? [o] : o);
            else if (ce.test(o)) {
                for (h = h || v.appendChild(t.createElement("div")), p = (ru.exec(o) || ["", ""])[1].toLowerCase(), a = s[p] || s._default, h.innerHTML = a[1] + o.replace(iu, "<$1><\/$2>") + a[2], c = a[0]; c--;) h = h.lastChild;
                if (!r.leadingWhitespace && hi.test(o) && l.push(t.createTextNode(hi.exec(o)[0])), !r.tbody) for (o = "table" !== p || uu.test(o) ? "<table>" !== a[1] || uu.test(o) ? 0 : h: h.firstChild, c = o && o.childNodes.length; c--;) i.nodeName(w = o.childNodes[c], "tbody") && !w.childNodes.length && o.removeChild(w);
                for (i.merge(l, h.childNodes), h.textContent = ""; h.firstChild;) h.removeChild(h.firstChild);
                h = v.lastChild
            } else l.push(t.createTextNode(o));
            for (h && v.removeChild(h), r.appendChecked || i.grep(f(l, "input"), we), y = 0; o = l[y++];) if ((!e || -1 === i.inArray(o, e)) && (b = i.contains(o.ownerDocument, o), h = f(v.appendChild(o), "script"), b && li(h), u)) for (c = 0; o = h[c++];) fu.test(o.type || "") && u.push(o);
            return h = null,
            v
        },
        cleanData: function(n, t) {
            for (var u, e, f, s, a = 0,
            h = i.expando,
            l = i.cache,
            v = r.deleteExpando,
            y = i.event.special; null != (u = n[a]); a++) if ((t || i.acceptData(u)) && (f = u[h], s = f && l[f])) {
                if (s.events) for (e in s.events) y[e] ? i.event.remove(u, e) : i.removeEvent(u, e, s.handle);
                l[f] && (delete l[f], v ? delete u[h] : typeof u.removeAttribute !== o ? u.removeAttribute(h) : u[h] = null, c.push(f))
            }
        }
    });
    i.fn.extend({
        text: function(n) {
            return b(this,
            function(n) {
                return void 0 === n ? i.text(this) : this.empty().append((this[0] && this[0].ownerDocument || u).createTextNode(n))
            },
            null, n, arguments.length)
        },
        append: function() {
            return this.domManip(arguments,
            function(n) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var t = eu(this, n);
                    t.appendChild(n)
                }
            })
        },
        prepend: function() {
            return this.domManip(arguments,
            function(n) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var t = eu(this, n);
                    t.insertBefore(n, t.firstChild)
                }
            })
        },
        before: function() {
            return this.domManip(arguments,
            function(n) {
                this.parentNode && this.parentNode.insertBefore(n, this)
            })
        },
        after: function() {
            return this.domManip(arguments,
            function(n) {
                this.parentNode && this.parentNode.insertBefore(n, this.nextSibling)
            })
        },
        remove: function(n, t) {
            for (var r, e = n ? i.filter(n, this) : this, u = 0; null != (r = e[u]); u++) t || 1 !== r.nodeType || i.cleanData(f(r)),
            r.parentNode && (t && i.contains(r.ownerDocument, r) && li(f(r, "script")), r.parentNode.removeChild(r));
            return this
        },
        empty: function() {
            for (var n, t = 0; null != (n = this[t]); t++) {
                for (1 === n.nodeType && i.cleanData(f(n, !1)); n.firstChild;) n.removeChild(n.firstChild);
                n.options && i.nodeName(n, "select") && (n.options.length = 0)
            }
            return this
        },
        clone: function(n, t) {
            return n = null == n ? !1 : n,
            t = null == t ? n: t,
            this.map(function() {
                return i.clone(this, n, t)
            })
        },
        html: function(n) {
            return b(this,
            function(n) {
                var t = this[0] || {},
                u = 0,
                e = this.length;
                if (void 0 === n) return 1 === t.nodeType ? t.innerHTML.replace(he, "") : void 0;
                if (! ("string" != typeof n || le.test(n) || !r.htmlSerialize && tu.test(n) || !r.leadingWhitespace && hi.test(n) || s[(ru.exec(n) || ["", ""])[1].toLowerCase()])) {
                    n = n.replace(iu, "<$1><\/$2>");
                    try {
                        for (; e > u; u++) t = this[u] || {},
                        1 === t.nodeType && (i.cleanData(f(t, !1)), t.innerHTML = n);
                        t = 0
                    } catch(o) {}
                }
                t && this.empty().append(n)
            },
            null, n, arguments.length)
        },
        replaceWith: function() {
            var n = arguments[0];
            return this.domManip(arguments,
            function(t) {
                n = this.parentNode;
                i.cleanData(f(this));
                n && n.replaceChild(t, this)
            }),
            n && (n.length || n.nodeType) ? this: this.remove()
        },
        detach: function(n) {
            return this.remove(n, !0)
        },
        domManip: function(n, t) {
            n = ir.apply([], n);
            var h, u, c, o, v, s, e = 0,
            l = this.length,
            p = this,
            w = l - 1,
            a = n[0],
            y = i.isFunction(a);
            if (y || l > 1 && "string" == typeof a && !r.checkClone && ae.test(a)) return this.each(function(i) {
                var r = p.eq(i);
                y && (n[0] = a.call(this, i, r.html()));
                r.domManip(n, t)
            });
            if (l && (s = i.buildFragment(n, this[0].ownerDocument, !1, this), h = s.firstChild, 1 === s.childNodes.length && (s = h), h)) {
                for (o = i.map(f(s, "script"), ou), c = o.length; l > e; e++) u = s,
                e !== w && (u = i.clone(u, !0, !0), c && i.merge(o, f(u, "script"))),
                t.call(this[e], u, e);
                if (c) for (v = o[o.length - 1].ownerDocument, i.map(o, su), e = 0; c > e; e++) u = o[e],
                fu.test(u.type || "") && !i._data(u, "globalEval") && i.contains(v, u) && (u.src ? i._evalUrl && i._evalUrl(u.src) : i.globalEval((u.text || u.textContent || u.innerHTML || "").replace(ye, "")));
                s = h = null
            }
            return this
        }
    });
    i.each({
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith"
    },
    function(n, t) {
        i.fn[n] = function(n) {
            for (var u, r = 0,
            f = [], e = i(n), o = e.length - 1; o >= r; r++) u = r === o ? this: this.clone(!0),
            i(e[r])[t](u),
            ii.apply(f, u.get());
            return this.pushStack(f)
        }
    });
    ai = {}; !
    function() {
        var n;
        r.shrinkWrapBlocks = function() {
            if (null != n) return n;
            n = !1;
            var t, i, r;
            return i = u.getElementsByTagName("body")[0],
            i && i.style ? (t = u.createElement("div"), r = u.createElement("div"), r.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", i.appendChild(r).appendChild(t), typeof t.style.zoom !== o && (t.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1", t.appendChild(u.createElement("div")).style.width = "5px", n = 3 !== t.offsetWidth), i.removeChild(r), n) : void 0
        }
    } ();
    var lu = /^margin/,
    pt = new RegExp("^(" + at + ")(?!px)[a-z%]+$", "i"),
    k,
    d,
    ke = /^(top|right|bottom|left)$/;
    n.getComputedStyle ? (k = function(n) {
        return n.ownerDocument.defaultView.getComputedStyle(n, null)
    },
    d = function(n, t, r) {
        var e, o, s, u, f = n.style;
        return r = r || k(n),
        u = r ? r.getPropertyValue(t) || r[t] : void 0,
        r && ("" !== u || i.contains(n.ownerDocument, n) || (u = i.style(n, t)), pt.test(u) && lu.test(t) && (e = f.width, o = f.minWidth, s = f.maxWidth, f.minWidth = f.maxWidth = f.width = u, u = r.width, f.width = e, f.minWidth = o, f.maxWidth = s)),
        void 0 === u ? u: u + ""
    }) : u.documentElement.currentStyle && (k = function(n) {
        return n.currentStyle
    },
    d = function(n, t, i) {
        var o, f, e, r, u = n.style;
        return i = i || k(n),
        r = i ? i[t] : void 0,
        null == r && u && u[t] && (r = u[t]),
        pt.test(r) && !ke.test(t) && (o = u.left, f = n.runtimeStyle, e = f && f.left, e && (f.left = n.currentStyle.left), u.left = "fontSize" === t ? "1em": r, r = u.pixelLeft + "px", u.left = o, e && (f.left = e)),
        void 0 === r ? r: r + "" || "auto"
    }); !
    function() {
        var f, t, l, o, s, e, h;
        if (f = u.createElement("div"), f.innerHTML = "  <link/><table><\/table><a href='/a'>a<\/a><input type='checkbox'/>", l = f.getElementsByTagName("a")[0], t = l && l.style) {
            t.cssText = "float:left;opacity:.5";
            r.opacity = "0.5" === t.opacity;
            r.cssFloat = !!t.cssFloat;
            f.style.backgroundClip = "content-box";
            f.cloneNode(!0).style.backgroundClip = "";
            r.clearCloneStyle = "content-box" === f.style.backgroundClip;
            r.boxSizing = "" === t.boxSizing || "" === t.MozBoxSizing || "" === t.WebkitBoxSizing;
            i.extend(r, {
                reliableHiddenOffsets: function() {
                    return null == e && c(),
                    e
                },
                boxSizingReliable: function() {
                    return null == s && c(),
                    s
                },
                pixelPosition: function() {
                    return null == o && c(),
                    o
                },
                reliableMarginRight: function() {
                    return null == h && c(),
                    h
                }
            });
            function c() {
                var i, r, f, t;
                r = u.getElementsByTagName("body")[0];
                r && r.style && (i = u.createElement("div"), f = u.createElement("div"), f.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", r.appendChild(f).appendChild(i), i.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute", o = s = !1, h = !0, n.getComputedStyle && (o = "1%" !== (n.getComputedStyle(i, null) || {}).top, s = "4px" === (n.getComputedStyle(i, null) || {
                    width: "4px"
                }).width, t = i.appendChild(u.createElement("div")), t.style.cssText = i.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", t.style.marginRight = t.style.width = "0", i.style.width = "1px", h = !parseFloat((n.getComputedStyle(t, null) || {}).marginRight)), i.innerHTML = "<table><tr><td><\/td><td>t<\/td><\/tr><\/table>", t = i.getElementsByTagName("td"), t[0].style.cssText = "margin:0;border:0;padding:0;display:none", e = 0 === t[0].offsetHeight, e && (t[0].style.display = "", t[1].style.display = "none", e = 0 === t[0].offsetHeight), r.removeChild(f))
            }
        }
    } ();
    i.swap = function(n, t, i, r) {
        var f, u, e = {};
        for (u in t) e[u] = n.style[u],
        n.style[u] = t[u];
        f = i.apply(n, r || []);
        for (u in t) n.style[u] = e[u];
        return f
    };
    var vi = /alpha\([^)]*\)/i,
    de = /opacity\s*=\s*([^)]*)/,
    ge = /^(none|table(?!-c[ea]).+)/,
    no = new RegExp("^(" + at + ")(.*)$", "i"),
    to = new RegExp("^([+-])=(" + at + ")", "i"),
    io = {
        position: "absolute",
        visibility: "hidden",
        display: "block"
    },
    vu = {
        letterSpacing: "0",
        fontWeight: "400"
    },
    yu = ["Webkit", "O", "Moz", "ms"];
    i.extend({
        cssHooks: {
            opacity: {
                get: function(n, t) {
                    if (t) {
                        var i = d(n, "opacity");
                        return "" === i ? "1": i
                    }
                }
            }
        },
        cssNumber: {
            columnCount: !0,
            fillOpacity: !0,
            flexGrow: !0,
            flexShrink: !0,
            fontWeight: !0,
            lineHeight: !0,
            opacity: !0,
            order: !0,
            orphans: !0,
            widows: !0,
            zIndex: !0,
            zoom: !0
        },
        cssProps: {
            float: r.cssFloat ? "cssFloat": "styleFloat"
        },
        style: function(n, t, u, f) {
            if (n && 3 !== n.nodeType && 8 !== n.nodeType && n.style) {
                var o, h, e, s = i.camelCase(t),
                c = n.style;
                if (t = i.cssProps[s] || (i.cssProps[s] = pu(c, s)), e = i.cssHooks[t] || i.cssHooks[s], void 0 === u) return e && "get" in e && void 0 !== (o = e.get(n, !1, f)) ? o: c[t];
                if (h = typeof u, "string" === h && (o = to.exec(u)) && (u = (o[1] + 1) * o[2] + parseFloat(i.css(n, t)), h = "number"), null != u && u === u && ("number" !== h || i.cssNumber[s] || (u += "px"), r.clearCloneStyle || "" !== u || 0 !== t.indexOf("background") || (c[t] = "inherit"), !(e && "set" in e && void 0 === (u = e.set(n, u, f))))) try {
                    c[t] = u
                } catch(l) {}
            }
        },
        css: function(n, t, r, u) {
            var s, f, e, o = i.camelCase(t);
            return t = i.cssProps[o] || (i.cssProps[o] = pu(n.style, o)),
            e = i.cssHooks[t] || i.cssHooks[o],
            e && "get" in e && (f = e.get(n, !0, r)),
            void 0 === f && (f = d(n, t, u)),
            "normal" === f && t in vu && (f = vu[t]),
            "" === r || r ? (s = parseFloat(f), r === !0 || i.isNumeric(s) ? s || 0 : f) : f
        }
    });
    i.each(["height", "width"],
    function(n, t) {
        i.cssHooks[t] = {
            get: function(n, r, u) {
                if (r) return ge.test(i.css(n, "display")) && 0 === n.offsetWidth ? i.swap(n, io,
                function() {
                    return du(n, t, u)
                }) : du(n, t, u)
            },
            set: function(n, u, f) {
                var e = f && k(n);
                return bu(n, u, f ? ku(n, t, f, r.boxSizing && "border-box" === i.css(n, "boxSizing", !1, e), e) : 0)
            }
        }
    });
    r.opacity || (i.cssHooks.opacity = {
        get: function(n, t) {
            return de.test((t && n.currentStyle ? n.currentStyle.filter: n.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "": t ? "1": ""
        },
        set: function(n, t) {
            var r = n.style,
            u = n.currentStyle,
            e = i.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")": "",
            f = u && u.filter || r.filter || "";
            r.zoom = 1; (t >= 1 || "" === t) && "" === i.trim(f.replace(vi, "")) && r.removeAttribute && (r.removeAttribute("filter"), "" === t || u && !u.filter) || (r.filter = vi.test(f) ? f.replace(vi, e) : f + " " + e)
        }
    });
    i.cssHooks.marginRight = au(r.reliableMarginRight,
    function(n, t) {
        if (t) return i.swap(n, {
            display: "inline-block"
        },
        d, [n, "marginRight"])
    });
    i.each({
        margin: "",
        padding: "",
        border: "Width"
    },
    function(n, t) {
        i.cssHooks[n + t] = {
            expand: function(i) {
                for (var r = 0,
                f = {},
                u = "string" == typeof i ? i.split(" ") : [i]; 4 > r; r++) f[n + w[r] + t] = u[r] || u[r - 2] || u[0];
                return f
            }
        };
        lu.test(n) || (i.cssHooks[n + t].set = bu)
    });
    i.fn.extend({
        css: function(n, t) {
            return b(this,
            function(n, t, r) {
                var f, e, o = {},
                u = 0;
                if (i.isArray(t)) {
                    for (f = k(n), e = t.length; e > u; u++) o[t[u]] = i.css(n, t[u], !1, f);
                    return o
                }
                return void 0 !== r ? i.style(n, t, r) : i.css(n, t)
            },
            n, t, arguments.length > 1)
        },
        show: function() {
            return wu(this, !0)
        },
        hide: function() {
            return wu(this)
        },
        toggle: function(n) {
            return "boolean" == typeof n ? n ? this.show() : this.hide() : this.each(function() {
                et(this) ? i(this).show() : i(this).hide()
            })
        }
    });
    i.Tween = e;
    e.prototype = {
        constructor: e,
        init: function(n, t, r, u, f, e) {
            this.elem = n;
            this.prop = r;
            this.easing = f || "swing";
            this.options = t;
            this.start = this.now = this.cur();
            this.end = u;
            this.unit = e || (i.cssNumber[r] ? "": "px")
        },
        cur: function() {
            var n = e.propHooks[this.prop];
            return n && n.get ? n.get(this) : e.propHooks._default.get(this)
        },
        run: function(n) {
            var r, t = e.propHooks[this.prop];
            return this.pos = r = this.options.duration ? i.easing[this.easing](n, this.options.duration * n, 0, 1, this.options.duration) : n,
            this.now = (this.end - this.start) * r + this.start,
            this.options.step && this.options.step.call(this.elem, this.now, this),
            t && t.set ? t.set(this) : e.propHooks._default.set(this),
            this
        }
    };
    e.prototype.init.prototype = e.prototype;
    e.propHooks = {
        _default: {
            get: function(n) {
                var t;
                return null == n.elem[n.prop] || n.elem.style && null != n.elem.style[n.prop] ? (t = i.css(n.elem, n.prop, ""), t && "auto" !== t ? t: 0) : n.elem[n.prop]
            },
            set: function(n) {
                i.fx.step[n.prop] ? i.fx.step[n.prop](n) : n.elem.style && (null != n.elem.style[i.cssProps[n.prop]] || i.cssHooks[n.prop]) ? i.style(n.elem, n.prop, n.now + n.unit) : n.elem[n.prop] = n.now
            }
        }
    };
    e.propHooks.scrollTop = e.propHooks.scrollLeft = {
        set: function(n) {
            n.elem.nodeType && n.elem.parentNode && (n.elem[n.prop] = n.now)
        }
    };
    i.easing = {
        linear: function(n) {
            return n
        },
        swing: function(n) {
            return.5 - Math.cos(n * Math.PI) / 2
        }
    };
    i.fx = e.prototype.init;
    i.fx.step = {};
    var rt, wt, ro = /^(?:toggle|show|hide)$/,
    gu = new RegExp("^(?:([+-])=|)(" + at + ")([a-z%]*)$", "i"),
    uo = /queueHooks$/,
    bt = [fo],
    st = {
        "*": [function(n, t) {
            var f = this.createTween(n, t),
            s = f.cur(),
            r = gu.exec(t),
            e = r && r[3] || (i.cssNumber[n] ? "": "px"),
            u = (i.cssNumber[n] || "px" !== e && +s) && gu.exec(i.css(f.elem, n)),
            o = 1,
            h = 20;
            if (u && u[3] !== e) {
                e = e || u[3];
                r = r || [];
                u = +s || 1;
                do o = o || ".5",
                u /= o,
                i.style(f.elem, n, u + e);
                while (o !== (o = f.cur() / s) && 1 !== o && --h)
            }
            return r && (u = f.start = +u || +s || 0, f.unit = e, f.end = r[1] ? u + (r[1] + 1) * r[2] : +r[2]),
            f
        }]
    };
    i.Animation = i.extend(rf, {
        tweener: function(n, t) {
            i.isFunction(n) ? (t = n, n = ["*"]) : n = n.split(" ");
            for (var r, u = 0,
            f = n.length; f > u; u++) r = n[u],
            st[r] = st[r] || [],
            st[r].unshift(t)
        },
        prefilter: function(n, t) {
            t ? bt.unshift(n) : bt.push(n)
        }
    });
    i.speed = function(n, t, r) {
        var u = n && "object" == typeof n ? i.extend({},
        n) : {
            complete: r || !r && t || i.isFunction(n) && n,
            duration: n,
            easing: r && t || t && !i.isFunction(t) && t
        };
        return u.duration = i.fx.off ? 0 : "number" == typeof u.duration ? u.duration: u.duration in i.fx.speeds ? i.fx.speeds[u.duration] : i.fx.speeds._default,
        (null == u.queue || u.queue === !0) && (u.queue = "fx"),
        u.old = u.complete,
        u.complete = function() {
            i.isFunction(u.old) && u.old.call(this);
            u.queue && i.dequeue(this, u.queue)
        },
        u
    };
    i.fn.extend({
        fadeTo: function(n, t, i, r) {
            return this.filter(et).css("opacity", 0).show().end().animate({
                opacity: t
            },
            n, i, r)
        },
        animate: function(n, t, r, u) {
            var o = i.isEmptyObject(n),
            e = i.speed(t, r, u),
            f = function() {
                var t = rf(this, i.extend({},
                n), e); (o || i._data(this, "finish")) && t.stop(!0)
            };
            return f.finish = f,
            o || e.queue === !1 ? this.each(f) : this.queue(e.queue, f)
        },
        stop: function(n, t, r) {
            var u = function(n) {
                var t = n.stop;
                delete n.stop;
                t(r)
            };
            return "string" != typeof n && (r = t, t = n, n = void 0),
            t && n !== !1 && this.queue(n || "fx", []),
            this.each(function() {
                var o = !0,
                t = null != n && n + "queueHooks",
                e = i.timers,
                f = i._data(this);
                if (t) f[t] && f[t].stop && u(f[t]);
                else for (t in f) f[t] && f[t].stop && uo.test(t) && u(f[t]);
                for (t = e.length; t--;) e[t].elem !== this || null != n && e[t].queue !== n || (e[t].anim.stop(r), o = !1, e.splice(t, 1)); (o || !r) && i.dequeue(this, n)
            })
        },
        finish: function(n) {
            return n !== !1 && (n = n || "fx"),
            this.each(function() {
                var t, f = i._data(this),
                r = f[n + "queue"],
                e = f[n + "queueHooks"],
                u = i.timers,
                o = r ? r.length: 0;
                for (f.finish = !0, i.queue(this, n, []), e && e.stop && e.stop.call(this, !0), t = u.length; t--;) u[t].elem === this && u[t].queue === n && (u[t].anim.stop(!0), u.splice(t, 1));
                for (t = 0; o > t; t++) r[t] && r[t].finish && r[t].finish.call(this);
                delete f.finish
            })
        }
    });
    i.each(["toggle", "show", "hide"],
    function(n, t) {
        var r = i.fn[t];
        i.fn[t] = function(n, i, u) {
            return null == n || "boolean" == typeof n ? r.apply(this, arguments) : this.animate(kt(t, !0), n, i, u)
        }
    });
    i.each({
        slideDown: kt("show"),
        slideUp: kt("hide"),
        slideToggle: kt("toggle"),
        fadeIn: {
            opacity: "show"
        },
        fadeOut: {
            opacity: "hide"
        },
        fadeToggle: {
            opacity: "toggle"
        }
    },
    function(n, t) {
        i.fn[n] = function(n, i, r) {
            return this.animate(t, n, i, r)
        }
    });
    i.timers = [];
    i.fx.tick = function() {
        var r, n = i.timers,
        t = 0;
        for (rt = i.now(); t < n.length; t++) r = n[t],
        r() || n[t] !== r || n.splice(t--, 1);
        n.length || i.fx.stop();
        rt = void 0
    };
    i.fx.timer = function(n) {
        i.timers.push(n);
        n() ? i.fx.start() : i.timers.pop()
    };
    i.fx.interval = 13;
    i.fx.start = function() {
        wt || (wt = setInterval(i.fx.tick, i.fx.interval))
    };
    i.fx.stop = function() {
        clearInterval(wt);
        wt = null
    };
    i.fx.speeds = {
        slow: 600,
        fast: 200,
        _default: 400
    };
    i.fn.delay = function(n, t) {
        return n = i.fx ? i.fx.speeds[n] || n: n,
        t = t || "fx",
        this.queue(t,
        function(t, i) {
            var r = setTimeout(t, n);
            i.stop = function() {
                clearTimeout(r)
            }
        })
    },
    function() {
        var n, t, f, i, e;
        t = u.createElement("div");
        t.setAttribute("className", "t");
        t.innerHTML = "  <link/><table><\/table><a href='/a'>a<\/a><input type='checkbox'/>";
        i = t.getElementsByTagName("a")[0];
        f = u.createElement("select");
        e = f.appendChild(u.createElement("option"));
        n = t.getElementsByTagName("input")[0];
        i.style.cssText = "top:1px";
        r.getSetAttribute = "t" !== t.className;
        r.style = /top/.test(i.getAttribute("style"));
        r.hrefNormalized = "/a" === i.getAttribute("href");
        r.checkOn = !!n.value;
        r.optSelected = e.selected;
        r.enctype = !!u.createElement("form").enctype;
        f.disabled = !0;
        r.optDisabled = !e.disabled;
        n = u.createElement("input");
        n.setAttribute("value", "");
        r.input = "" === n.getAttribute("value");
        n.value = "t";
        n.setAttribute("type", "radio");
        r.radioValue = "t" === n.value
    } ();
    uf = /\r/g;
    i.fn.extend({
        val: function(n) {
            var t, r, f, u = this[0];
            return arguments.length ? (f = i.isFunction(n), this.each(function(r) {
                var u;
                1 === this.nodeType && (u = f ? n.call(this, r, i(this).val()) : n, null == u ? u = "": "number" == typeof u ? u += "": i.isArray(u) && (u = i.map(u,
                function(n) {
                    return null == n ? "": n + ""
                })), t = i.valHooks[this.type] || i.valHooks[this.nodeName.toLowerCase()], t && "set" in t && void 0 !== t.set(this, u, "value") || (this.value = u))
            })) : u ? (t = i.valHooks[u.type] || i.valHooks[u.nodeName.toLowerCase()], t && "get" in t && void 0 !== (r = t.get(u, "value")) ? r: (r = u.value, "string" == typeof r ? r.replace(uf, "") : null == r ? "": r)) : void 0
        }
    });
    i.extend({
        valHooks: {
            option: {
                get: function(n) {
                    var t = i.find.attr(n, "value");
                    return null != t ? t: i.trim(i.text(n))
                }
            },
            select: {
                get: function(n) {
                    for (var o, t, s = n.options,
                    u = n.selectedIndex,
                    f = "select-one" === n.type || 0 > u,
                    h = f ? null: [], c = f ? u + 1 : s.length, e = 0 > u ? c: f ? u: 0; c > e; e++) if (t = s[e], !(!t.selected && e !== u || (r.optDisabled ? t.disabled: null !== t.getAttribute("disabled")) || t.parentNode.disabled && i.nodeName(t.parentNode, "optgroup"))) {
                        if (o = i(t).val(), f) return o;
                        h.push(o)
                    }
                    return h
                },
                set: function(n, t) {
                    for (var f, r, u = n.options,
                    o = i.makeArray(t), e = u.length; e--;) if (r = u[e], i.inArray(i.valHooks.option.get(r), o) >= 0) try {
                        r.selected = f = !0
                    } catch(s) {
                        r.scrollHeight
                    } else r.selected = !1;
                    return f || (n.selectedIndex = -1),
                    u
                }
            }
        }
    });
    i.each(["radio", "checkbox"],
    function() {
        i.valHooks[this] = {
            set: function(n, t) {
                if (i.isArray(t)) return n.checked = i.inArray(i(n).val(), t) >= 0
            }
        };
        r.checkOn || (i.valHooks[this].get = function(n) {
            return null === n.getAttribute("value") ? "on": n.value
        })
    });
    var ut, ff, v = i.expr.attrHandle,
    yi = /^(?:checked|selected)$/i,
    g = r.getSetAttribute,
    dt = r.input;
    i.fn.extend({
        attr: function(n, t) {
            return b(this, i.attr, n, t, arguments.length > 1)
        },
        removeAttr: function(n) {
            return this.each(function() {
                i.removeAttr(this, n)
            })
        }
    });
    i.extend({
        attr: function(n, t, r) {
            var u, f, e = n.nodeType;
            if (n && 3 !== e && 8 !== e && 2 !== e) return typeof n.getAttribute === o ? i.prop(n, t, r) : (1 === e && i.isXMLDoc(n) || (t = t.toLowerCase(), u = i.attrHooks[t] || (i.expr.match.bool.test(t) ? ff: ut)), void 0 === r ? u && "get" in u && null !== (f = u.get(n, t)) ? f: (f = i.find.attr(n, t), null == f ? void 0 : f) : null !== r ? u && "set" in u && void 0 !== (f = u.set(n, r, t)) ? f: (n.setAttribute(t, r + ""), r) : void i.removeAttr(n, t))
        },
        removeAttr: function(n, t) {
            var r, u, e = 0,
            f = t && t.match(h);
            if (f && 1 === n.nodeType) while (r = f[e++]) u = i.propFix[r] || r,
            i.expr.match.bool.test(r) ? dt && g || !yi.test(r) ? n[u] = !1 : n[i.camelCase("default-" + r)] = n[u] = !1 : i.attr(n, r, ""),
            n.removeAttribute(g ? r: u)
        },
        attrHooks: {
            type: {
                set: function(n, t) {
                    if (!r.radioValue && "radio" === t && i.nodeName(n, "input")) {
                        var u = n.value;
                        return n.setAttribute("type", t),
                        u && (n.value = u),
                        t
                    }
                }
            }
        }
    });
    ff = {
        set: function(n, t, r) {
            return t === !1 ? i.removeAttr(n, r) : dt && g || !yi.test(r) ? n.setAttribute(!g && i.propFix[r] || r, r) : n[i.camelCase("default-" + r)] = n[r] = !0,
            r
        }
    };
    i.each(i.expr.match.bool.source.match(/\w+/g),
    function(n, t) {
        var r = v[t] || i.find.attr;
        v[t] = dt && g || !yi.test(t) ?
        function(n, t, i) {
            var u, f;
            return i || (f = v[t], v[t] = u, u = null != r(n, t, i) ? t.toLowerCase() : null, v[t] = f),
            u
        }: function(n, t, r) {
            if (!r) return n[i.camelCase("default-" + t)] ? t.toLowerCase() : null
        }
    });
    dt && g || (i.attrHooks.value = {
        set: function(n, t, r) {
            return i.nodeName(n, "input") ? void(n.defaultValue = t) : ut && ut.set(n, t, r)
        }
    });
    g || (ut = {
        set: function(n, t, i) {
            var r = n.getAttributeNode(i);
            return r || n.setAttributeNode(r = n.ownerDocument.createAttribute(i)),
            r.value = t += "",
            "value" === i || t === n.getAttribute(i) ? t: void 0
        }
    },
    v.id = v.name = v.coords = function(n, t, i) {
        var r;
        if (!i) return (r = n.getAttributeNode(t)) && "" !== r.value ? r.value: null
    },
    i.valHooks.button = {
        get: function(n, t) {
            var i = n.getAttributeNode(t);
            if (i && i.specified) return i.value
        },
        set: ut.set
    },
    i.attrHooks.contenteditable = {
        set: function(n, t, i) {
            ut.set(n, "" === t ? !1 : t, i)
        }
    },
    i.each(["width", "height"],
    function(n, t) {
        i.attrHooks[t] = {
            set: function(n, i) {
                if ("" === i) return (n.setAttribute(t, "auto"), i)
            }
        }
    }));
    r.style || (i.attrHooks.style = {
        get: function(n) {
            return n.style.cssText || void 0
        },
        set: function(n, t) {
            return n.style.cssText = t + ""
        }
    });
    ef = /^(?:input|select|textarea|button|object)$/i;
    of = /^(?:a|area)$/i;
    i.fn.extend({
        prop: function(n, t) {
            return b(this, i.prop, n, t, arguments.length > 1)
        },
        removeProp: function(n) {
            return n = i.propFix[n] || n,
            this.each(function() {
                try {
                    this[n] = void 0;
                    delete this[n]
                } catch(t) {}
            })
        }
    });
    i.extend({
        propFix: {
            "for": "htmlFor",
            "class": "className"
        },
        prop: function(n, t, r) {
            var f, u, o, e = n.nodeType;
            if (n && 3 !== e && 8 !== e && 2 !== e) return o = 1 !== e || !i.isXMLDoc(n),
            o && (t = i.propFix[t] || t, u = i.propHooks[t]),
            void 0 !== r ? u && "set" in u && void 0 !== (f = u.set(n, r, t)) ? f: n[t] = r: u && "get" in u && null !== (f = u.get(n, t)) ? f: n[t]
        },
        propHooks: {
            tabIndex: {
                get: function(n) {
                    var t = i.find.attr(n, "tabindex");
                    return t ? parseInt(t, 10) : ef.test(n.nodeName) || of.test(n.nodeName) && n.href ? 0 : -1
                }
            }
        }
    });
    r.hrefNormalized || i.each(["href", "src"],
    function(n, t) {
        i.propHooks[t] = {
            get: function(n) {
                return n.getAttribute(t, 4)
            }
        }
    });
    r.optSelected || (i.propHooks.selected = {
        get: function(n) {
            var t = n.parentNode;
            return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex),
            null
        }
    });
    i.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"],
    function() {
        i.propFix[this.toLowerCase()] = this
    });
    r.enctype || (i.propFix.enctype = "encoding");
    gt = /[\t\r\n\f]/g;
    i.fn.extend({
        addClass: function(n) {
            var o, t, r, u, s, f, e = 0,
            c = this.length,
            l = "string" == typeof n && n;
            if (i.isFunction(n)) return this.each(function(t) {
                i(this).addClass(n.call(this, t, this.className))
            });
            if (l) for (o = (n || "").match(h) || []; c > e; e++) if (t = this[e], r = 1 === t.nodeType && (t.className ? (" " + t.className + " ").replace(gt, " ") : " ")) {
                for (s = 0; u = o[s++];) r.indexOf(" " + u + " ") < 0 && (r += u + " ");
                f = i.trim(r);
                t.className !== f && (t.className = f)
            }
            return this
        },
        removeClass: function(n) {
            var o, t, r, u, s, f, e = 0,
            c = this.length,
            l = 0 === arguments.length || "string" == typeof n && n;
            if (i.isFunction(n)) return this.each(function(t) {
                i(this).removeClass(n.call(this, t, this.className))
            });
            if (l) for (o = (n || "").match(h) || []; c > e; e++) if (t = this[e], r = 1 === t.nodeType && (t.className ? (" " + t.className + " ").replace(gt, " ") : "")) {
                for (s = 0; u = o[s++];) while (r.indexOf(" " + u + " ") >= 0) r = r.replace(" " + u + " ", " ");
                f = n ? i.trim(r) : "";
                t.className !== f && (t.className = f)
            }
            return this
        },
        toggleClass: function(n, t) {
            var r = typeof n;
            return "boolean" == typeof t && "string" === r ? t ? this.addClass(n) : this.removeClass(n) : this.each(i.isFunction(n) ?
            function(r) {
                i(this).toggleClass(n.call(this, r, this.className, t), t)
            }: function() {
                if ("string" === r) for (var t, f = 0,
                u = i(this), e = n.match(h) || []; t = e[f++];) u.hasClass(t) ? u.removeClass(t) : u.addClass(t);
                else(r === o || "boolean" === r) && (this.className && i._data(this, "__className__", this.className), this.className = this.className || n === !1 ? "": i._data(this, "__className__") || "")
            })
        },
        hasClass: function(n) {
            for (var i = " " + n + " ",
            t = 0,
            r = this.length; r > t; t++) if (1 === this[t].nodeType && (" " + this[t].className + " ").replace(gt, " ").indexOf(i) >= 0) return ! 0;
            return ! 1
        }
    });
    i.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),
    function(n, t) {
        i.fn[t] = function(n, i) {
            return arguments.length > 0 ? this.on(t, null, n, i) : this.trigger(t)
        }
    });
    i.fn.extend({
        hover: function(n, t) {
            return this.mouseenter(n).mouseleave(t || n)
        },
        bind: function(n, t, i) {
            return this.on(n, null, t, i)
        },
        unbind: function(n, t) {
            return this.off(n, null, t)
        },
        delegate: function(n, t, i, r) {
            return this.on(t, n, i, r)
        },
        undelegate: function(n, t, i) {
            return 1 === arguments.length ? this.off(n, "**") : this.off(t, n || "**", i)
        }
    });
    var pi = i.now(),
    wi = /\?/,
    oo = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
    i.parseJSON = function(t) {
        if (n.JSON && n.JSON.parse) return n.JSON.parse(t + "");
        var f, r = null,
        u = i.trim(t + "");
        return u && !i.trim(u.replace(oo,
        function(n, t, i, u) {
            return f && t && (r = 0),
            0 === r ? n: (f = i || t, r += !u - !i, "")
        })) ? Function("return " + u)() : i.error("Invalid JSON: " + t)
    };
    i.parseXML = function(t) {
        var r, u;
        if (!t || "string" != typeof t) return null;
        try {
            n.DOMParser ? (u = new DOMParser, r = u.parseFromString(t, "text/xml")) : (r = new ActiveXObject("Microsoft.XMLDOM"), r.async = "false", r.loadXML(t))
        } catch(f) {
            r = void 0
        }
        return r && r.documentElement && !r.getElementsByTagName("parsererror").length || i.error("Invalid XML: " + t),
        r
    };
    var nt, y, so = /#.*$/,
    sf = /([?&])_=[^&]*/,
    ho = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
    co = /^(?:GET|HEAD)$/,
    lo = /^\/\//,
    hf = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
    cf = {},
    bi = {},
    lf = "*/".concat("*");
    try {
        y = location.href
    } catch(ns) {
        y = u.createElement("a");
        y.href = "";
        y = y.href
    }
    nt = hf.exec(y.toLowerCase()) || [];
    i.extend({
        active: 0,
        lastModified: {},
        etag: {},
        ajaxSettings: {
            url: y,
            type: "GET",
            isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(nt[1]),
            global: !0,
            processData: !0,
            async: !0,
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            accepts: {
                "*": lf,
                text: "text/plain",
                html: "text/html",
                xml: "application/xml, text/xml",
                json: "application/json, text/javascript"
            },
            contents: {
                xml: /xml/,
                html: /html/,
                json: /json/
            },
            responseFields: {
                xml: "responseXML",
                text: "responseText",
                json: "responseJSON"
            },
            converters: {
                "* text": String,
                "text html": !0,
                "text json": i.parseJSON,
                "text xml": i.parseXML
            },
            flatOptions: {
                url: !0,
                context: !0
            }
        },
        ajaxSetup: function(n, t) {
            return t ? ki(ki(n, i.ajaxSettings), t) : ki(i.ajaxSettings, n)
        },
        ajaxPrefilter: af(cf),
        ajaxTransport: af(bi),
        ajax: function(n, t) {
            function w(n, t, s, h) {
                var v, it, nt, y, w, c = t;
                2 !== e && (e = 2, k && clearTimeout(k), a = void 0, b = h || "", u.readyState = n > 0 ? 4 : 0, v = n >= 200 && 300 > n || 304 === n, s && (y = ao(r, u, s)), y = vo(r, y, u, v), v ? (r.ifModified && (w = u.getResponseHeader("Last-Modified"), w && (i.lastModified[f] = w), w = u.getResponseHeader("etag"), w && (i.etag[f] = w)), 204 === n || "HEAD" === r.type ? c = "nocontent": 304 === n ? c = "notmodified": (c = y.state, it = y.data, nt = y.error, v = !nt)) : (nt = c, (n || !c) && (c = "error", 0 > n && (n = 0))), u.status = n, u.statusText = (t || c) + "", v ? g.resolveWith(o, [it, c, u]) : g.rejectWith(o, [u, c, nt]), u.statusCode(p), p = void 0, l && d.trigger(v ? "ajaxSuccess": "ajaxError", [u, r, v ? it: nt]), tt.fireWith(o, [u, c]), l && (d.trigger("ajaxComplete", [u, r]), --i.active || i.event.trigger("ajaxStop")))
            }
            "object" == typeof n && (t = n, n = void 0);
            t = t || {};
            var s, c, f, b, k, l, a, v, r = i.ajaxSetup({},
            t),
            o = r.context || r,
            d = r.context && (o.nodeType || o.jquery) ? i(o) : i.event,
            g = i.Deferred(),
            tt = i.Callbacks("once memory"),
            p = r.statusCode || {},
            it = {},
            rt = {},
            e = 0,
            ut = "canceled",
            u = {
                readyState: 0,
                getResponseHeader: function(n) {
                    var t;
                    if (2 === e) {
                        if (!v) for (v = {}; t = ho.exec(b);) v[t[1].toLowerCase()] = t[2];
                        t = v[n.toLowerCase()]
                    }
                    return null == t ? null: t
                },
                getAllResponseHeaders: function() {
                    return 2 === e ? b: null
                },
                setRequestHeader: function(n, t) {
                    var i = n.toLowerCase();
                    return e || (n = rt[i] = rt[i] || n, it[n] = t),
                    this
                },
                overrideMimeType: function(n) {
                    return e || (r.mimeType = n),
                    this
                },
                statusCode: function(n) {
                    var t;
                    if (n) if (2 > e) for (t in n) p[t] = [p[t], n[t]];
                    else u.always(n[u.status]);
                    return this
                },
                abort: function(n) {
                    var t = n || ut;
                    return a && a.abort(t),
                    w(0, t),
                    this
                }
            };
            if (g.promise(u).complete = tt.add, u.success = u.done, u.error = u.fail, r.url = ((n || r.url || y) + "").replace(so, "").replace(lo, nt[1] + "//"), r.type = t.method || t.type || r.method || r.type, r.dataTypes = i.trim(r.dataType || "*").toLowerCase().match(h) || [""], null == r.crossDomain && (s = hf.exec(r.url.toLowerCase()), r.crossDomain = !(!s || s[1] === nt[1] && s[2] === nt[2] && (s[3] || ("http:" === s[1] ? "80": "443")) === (nt[3] || ("http:" === nt[1] ? "80": "443")))), r.data && r.processData && "string" != typeof r.data && (r.data = i.param(r.data, r.traditional)), vf(cf, r, t, u), 2 === e) return u;
            l = r.global;
            l && 0 == i.active++&&i.event.trigger("ajaxStart");
            r.type = r.type.toUpperCase();
            r.hasContent = !co.test(r.type);
            f = r.url;
            r.hasContent || (r.data && (f = r.url += (wi.test(f) ? "&": "?") + r.data, delete r.data), r.cache === !1 && (r.url = sf.test(f) ? f.replace(sf, "$1_=" + pi++) : f + (wi.test(f) ? "&": "?") + "_=" + pi++));
            r.ifModified && (i.lastModified[f] && u.setRequestHeader("If-Modified-Since", i.lastModified[f]), i.etag[f] && u.setRequestHeader("If-None-Match", i.etag[f])); (r.data && r.hasContent && r.contentType !== !1 || t.contentType) && u.setRequestHeader("Content-Type", r.contentType);
            u.setRequestHeader("Accept", r.dataTypes[0] && r.accepts[r.dataTypes[0]] ? r.accepts[r.dataTypes[0]] + ("*" !== r.dataTypes[0] ? ", " + lf + "; q=0.01": "") : r.accepts["*"]);
            for (c in r.headers) u.setRequestHeader(c, r.headers[c]);
            if (r.beforeSend && (r.beforeSend.call(o, u, r) === !1 || 2 === e)) return u.abort();
            ut = "abort";
            for (c in {
                success: 1,
                error: 1,
                complete: 1
            }) u[c](r[c]);
            if (a = vf(bi, r, t, u)) {
                u.readyState = 1;
                l && d.trigger("ajaxSend", [u, r]);
                r.async && r.timeout > 0 && (k = setTimeout(function() {
                    u.abort("timeout")
                },
                r.timeout));
                try {
                    e = 1;
                    a.send(it, w)
                } catch(ft) {
                    if (! (2 > e)) throw ft;
                    w( - 1, ft)
                }
            } else w( - 1, "No Transport");
            return u
        },
        getJSON: function(n, t, r) {
            return i.get(n, t, r, "json")
        },
        getScript: function(n, t) {
            return i.get(n, void 0, t, "script")
        }
    });
    i.each(["get", "post"],
    function(n, t) {
        i[t] = function(n, r, u, f) {
            return i.isFunction(r) && (f = f || u, u = r, r = void 0),
            i.ajax({
                url: n,
                type: t,
                dataType: f,
                data: r,
                success: u
            })
        }
    });
    i.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"],
    function(n, t) {
        i.fn[t] = function(n) {
            return this.on(t, n)
        }
    });
    i._evalUrl = function(n) {
        return i.ajax({
            url: n,
            type: "GET",
            dataType: "script",
            async: !1,
            global: !1,
            throws: !0
        })
    };
    i.fn.extend({
        wrapAll: function(n) {
            if (i.isFunction(n)) return this.each(function(t) {
                i(this).wrapAll(n.call(this, t))
            });
            if (this[0]) {
                var t = i(n, this[0].ownerDocument).eq(0).clone(!0);
                this[0].parentNode && t.insertBefore(this[0]);
                t.map(function() {
                    for (var n = this; n.firstChild && 1 === n.firstChild.nodeType;) n = n.firstChild;
                    return n
                }).append(this)
            }
            return this
        },
        wrapInner: function(n) {
            return this.each(i.isFunction(n) ?
            function(t) {
                i(this).wrapInner(n.call(this, t))
            }: function() {
                var t = i(this),
                r = t.contents();
                r.length ? r.wrapAll(n) : t.append(n)
            })
        },
        wrap: function(n) {
            var t = i.isFunction(n);
            return this.each(function(r) {
                i(this).wrapAll(t ? n.call(this, r) : n)
            })
        },
        unwrap: function() {
            return this.parent().each(function() {
                i.nodeName(this, "body") || i(this).replaceWith(this.childNodes)
            }).end()
        }
    });
    i.expr.filters.hidden = function(n) {
        return n.offsetWidth <= 0 && n.offsetHeight <= 0 || !r.reliableHiddenOffsets() && "none" === (n.style && n.style.display || i.css(n, "display"))
    };
    i.expr.filters.visible = function(n) {
        return ! i.expr.filters.hidden(n)
    };
    var yo = /%20/g,
    po = /\[\]$/,
    yf = /\r?\n/g,
    wo = /^(?:submit|button|image|reset|file)$/i,
    bo = /^(?:input|select|textarea|keygen)/i;
    i.param = function(n, t) {
        var r, u = [],
        f = function(n, t) {
            t = i.isFunction(t) ? t() : null == t ? "": t;
            u[u.length] = encodeURIComponent(n) + "=" + encodeURIComponent(t)
        };
        if (void 0 === t && (t = i.ajaxSettings && i.ajaxSettings.traditional), i.isArray(n) || n.jquery && !i.isPlainObject(n)) i.each(n,
        function() {
            f(this.name, this.value)
        });
        else for (r in n) di(r, n[r], t, f);
        return u.join("&").replace(yo, "+")
    };
    i.fn.extend({
        serialize: function() {
            return i.param(this.serializeArray())
        },
        serializeArray: function() {
            return this.map(function() {
                var n = i.prop(this, "elements");
                return n ? i.makeArray(n) : this
            }).filter(function() {
                var n = this.type;
                return this.name && !i(this).is(":disabled") && bo.test(this.nodeName) && !wo.test(n) && (this.checked || !oi.test(n))
            }).map(function(n, t) {
                var r = i(this).val();
                return null == r ? null: i.isArray(r) ? i.map(r,
                function(n) {
                    return {
                        name: t.name,
                        value: n.replace(yf, "\r\n")
                    }
                }) : {
                    name: t.name,
                    value: r.replace(yf, "\r\n")
                }
            }).get()
        }
    });
    i.ajaxSettings.xhr = void 0 !== n.ActiveXObject ?
    function() {
        return ! this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && pf() || go()
    }: pf;
    var ko = 0,
    ni = {},
    ht = i.ajaxSettings.xhr();
    return n.ActiveXObject && i(n).on("unload",
    function() {
        for (var n in ni) ni[n](void 0, !0)
    }),
    r.cors = !!ht && "withCredentials" in ht,
    ht = r.ajax = !!ht,
    ht && i.ajaxTransport(function(n) {
        if (!n.crossDomain || r.cors) {
            var t;
            return {
                send: function(r, u) {
                    var e, f = n.xhr(),
                    o = ++ko;
                    if (f.open(n.type, n.url, n.async, n.username, n.password), n.xhrFields) for (e in n.xhrFields) f[e] = n.xhrFields[e];
                    n.mimeType && f.overrideMimeType && f.overrideMimeType(n.mimeType);
                    n.crossDomain || r["X-Requested-With"] || (r["X-Requested-With"] = "XMLHttpRequest");
                    for (e in r) void 0 !== r[e] && f.setRequestHeader(e, r[e] + "");
                    f.send(n.hasContent && n.data || null);
                    t = function(r, e) {
                        var s, c, h;
                        if (t && (e || 4 === f.readyState)) if (delete ni[o], t = void 0, f.onreadystatechange = i.noop, e) 4 !== f.readyState && f.abort();
                        else {
                            h = {};
                            s = f.status;
                            "string" == typeof f.responseText && (h.text = f.responseText);
                            try {
                                c = f.statusText
                            } catch(l) {
                                c = ""
                            }
                            s || !n.isLocal || n.crossDomain ? 1223 === s && (s = 204) : s = h.text ? 200 : 404
                        }
                        h && u(s, c, h, f.getAllResponseHeaders())
                    };
                    n.async ? 4 === f.readyState ? setTimeout(t) : f.onreadystatechange = ni[o] = t: t()
                },
                abort: function() {
                    t && t(void 0, !0)
                }
            }
        }
    }),
    i.ajaxSetup({
        accepts: {
            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
        },
        contents: {
            script: /(?:java|ecma)script/
        },
        converters: {
            "text script": function(n) {
                return i.globalEval(n),
                n
            }
        }
    }),
    i.ajaxPrefilter("script",
    function(n) {
        void 0 === n.cache && (n.cache = !1);
        n.crossDomain && (n.type = "GET", n.global = !1)
    }),
    i.ajaxTransport("script",
    function(n) {
        if (n.crossDomain) {
            var t, r = u.head || i("head")[0] || u.documentElement;
            return {
                send: function(i, f) {
                    t = u.createElement("script");
                    t.async = !0;
                    n.scriptCharset && (t.charset = n.scriptCharset);
                    t.src = n.url;
                    t.onload = t.onreadystatechange = function(n, i) { (i || !t.readyState || /loaded|complete/.test(t.readyState)) && (t.onload = t.onreadystatechange = null, t.parentNode && t.parentNode.removeChild(t), t = null, i || f(200, "success"))
                    };
                    r.insertBefore(t, r.firstChild)
                },
                abort: function() {
                    t && t.onload(void 0, !0)
                }
            }
        }
    }),
    gi = [],
    ti = /(=)\?(?=&|$)|\?\?/,
    i.ajaxSetup({
        jsonp: "callback",
        jsonpCallback: function() {
            var n = gi.pop() || i.expando + "_" + pi++;
            return this[n] = !0,
            n
        }
    }),
    i.ajaxPrefilter("json jsonp",
    function(t, r, u) {
        var f, o, e, s = t.jsonp !== !1 && (ti.test(t.url) ? "url": "string" == typeof t.data && !(t.contentType || "").indexOf("application/x-www-form-urlencoded") && ti.test(t.data) && "data");
        if (s || "jsonp" === t.dataTypes[0]) return (f = t.jsonpCallback = i.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(ti, "$1" + f) : t.jsonp !== !1 && (t.url += (wi.test(t.url) ? "&": "?") + t.jsonp + "=" + f), t.converters["script json"] = function() {
            return e || i.error(f + " was not called"),
            e[0]
        },
        t.dataTypes[0] = "json", o = n[f], n[f] = function() {
            e = arguments
        },
        u.always(function() {
            n[f] = o;
            t[f] && (t.jsonpCallback = r.jsonpCallback, gi.push(f));
            e && i.isFunction(o) && o(e[0]);
            e = o = void 0
        }), "script")
    }),
    i.parseHTML = function(n, t, r) {
        if (!n || "string" != typeof n) return null;
        "boolean" == typeof t && (r = t, t = !1);
        t = t || u;
        var f = er.exec(n),
        e = !r && [];
        return f ? [t.createElement(f[1])] : (f = i.buildFragment([n], t, e), e && e.length && i(e).remove(), i.merge([], f.childNodes))
    },
    nr = i.fn.load,
    i.fn.load = function(n, t, r) {
        if ("string" != typeof n && nr) return nr.apply(this, arguments);
        var u, o, s, f = this,
        e = n.indexOf(" ");
        return e >= 0 && (u = i.trim(n.slice(e, n.length)), n = n.slice(0, e)),
        i.isFunction(t) ? (r = t, t = void 0) : t && "object" == typeof t && (s = "POST"),
        f.length > 0 && i.ajax({
            url: n,
            type: s,
            dataType: "html",
            data: t
        }).done(function(n) {
            o = arguments;
            f.html(u ? i("<div>").append(i.parseHTML(n)).find(u) : n)
        }).complete(r &&
        function(n, t) {
            f.each(r, o || [n.responseText, t, n])
        }),
        this
    },
    i.expr.filters.animated = function(n) {
        return i.grep(i.timers,
        function(t) {
            return n === t.elem
        }).length
    },
    tr = n.document.documentElement,
    i.offset = {
        setOffset: function(n, t, r) {
            var e, o, s, h, u, c, v, l = i.css(n, "position"),
            a = i(n),
            f = {};
            "static" === l && (n.style.position = "relative");
            u = a.offset();
            s = i.css(n, "top");
            c = i.css(n, "left");
            v = ("absolute" === l || "fixed" === l) && i.inArray("auto", [s, c]) > -1;
            v ? (e = a.position(), h = e.top, o = e.left) : (h = parseFloat(s) || 0, o = parseFloat(c) || 0);
            i.isFunction(t) && (t = t.call(n, r, u));
            null != t.top && (f.top = t.top - u.top + h);
            null != t.left && (f.left = t.left - u.left + o);
            "using" in t ? t.using.call(n, f) : a.css(f)
        }
    },
    i.fn.extend({
        offset: function(n) {
            if (arguments.length) return void 0 === n ? this: this.each(function(t) {
                i.offset.setOffset(this, n, t)
            });
            var t, f, u = {
                top: 0,
                left: 0
            },
            r = this[0],
            e = r && r.ownerDocument;
            if (e) return t = e.documentElement,
            i.contains(t, r) ? (typeof r.getBoundingClientRect !== o && (u = r.getBoundingClientRect()), f = wf(e), {
                top: u.top + (f.pageYOffset || t.scrollTop) - (t.clientTop || 0),
                left: u.left + (f.pageXOffset || t.scrollLeft) - (t.clientLeft || 0)
            }) : u
        },
        position: function() {
            if (this[0]) {
                var n, r, t = {
                    top: 0,
                    left: 0
                },
                u = this[0];
                return "fixed" === i.css(u, "position") ? r = u.getBoundingClientRect() : (n = this.offsetParent(), r = this.offset(), i.nodeName(n[0], "html") || (t = n.offset()), t.top += i.css(n[0], "borderTopWidth", !0), t.left += i.css(n[0], "borderLeftWidth", !0)),
                {
                    top: r.top - t.top - i.css(u, "marginTop", !0),
                    left: r.left - t.left - i.css(u, "marginLeft", !0)
                }
            }
        },
        offsetParent: function() {
            return this.map(function() {
                for (var n = this.offsetParent || tr; n && !i.nodeName(n, "html") && "static" === i.css(n, "position");) n = n.offsetParent;
                return n || tr
            })
        }
    }),
    i.each({
        scrollLeft: "pageXOffset",
        scrollTop: "pageYOffset"
    },
    function(n, t) {
        var r = /Y/.test(t);
        i.fn[n] = function(u) {
            return b(this,
            function(n, u, f) {
                var e = wf(n);
                return void 0 === f ? e ? t in e ? e[t] : e.document.documentElement[u] : n[u] : void(e ? e.scrollTo(r ? i(e).scrollLeft() : f, r ? f: i(e).scrollTop()) : n[u] = f)
            },
            n, u, arguments.length, null)
        }
    }),
    i.each(["top", "left"],
    function(n, t) {
        i.cssHooks[t] = au(r.pixelPosition,
        function(n, r) {
            if (r) return (r = d(n, t), pt.test(r) ? i(n).position()[t] + "px": r)
        })
    }),
    i.each({
        Height: "height",
        Width: "width"
    },
    function(n, t) {
        i.each({
            padding: "inner" + n,
            content: t,
            "": "outer" + n
        },
        function(r, u) {
            i.fn[u] = function(u, f) {
                var e = arguments.length && (r || "boolean" != typeof u),
                o = r || (u === !0 || f === !0 ? "margin": "border");
                return b(this,
                function(t, r, u) {
                    var f;
                    return i.isWindow(t) ? t.document.documentElement["client" + n] : 9 === t.nodeType ? (f = t.documentElement, Math.max(t.body["scroll" + n], f["scroll" + n], t.body["offset" + n], f["offset" + n], f["client" + n])) : void 0 === u ? i.css(t, r, o) : i.style(t, r, u, o)
                },
                t, e ? u: void 0, e, null)
            }
        })
    }),
    i.fn.size = function() {
        return this.length
    },
    i.fn.andSelf = i.fn.addBack,
    "function" == typeof define && define.amd && define("jquery", [],
    function() {
        return i
    }),
    bf = n.jQuery,
    kf = n.$,
    i.noConflict = function(t) {
        return n.$ === i && (n.$ = kf),
        t && n.jQuery === i && (n.jQuery = bf),
        i
    },
    typeof t === o && (n.jQuery = n.$ = i),
    i
}), "undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery"); +
function(n) {
    "use strict";
    function t() {
        var i = document.createElement("bootstrap"),
        t = {
            WebkitTransition: "webkitTransitionEnd",
            MozTransition: "transitionend",
            OTransition: "oTransitionEnd otransitionend",
            transition: "transitionend"
        },
        n;
        for (n in t) if (void 0 !== i.style[n]) return {
            end: t[n]
        };
        return ! 1
    }
    n.fn.emulateTransitionEnd = function(t) {
        var i = !1,
        u = this,
        r;
        n(this).one("bsTransitionEnd",
        function() {
            i = !0
        });
        return r = function() {
            i || n(u).trigger(n.support.transition.end)
        },
        setTimeout(r, t),
        this
    };
    n(function() {
        n.support.transition = t();
        n.support.transition && (n.event.special.bsTransitionEnd = {
            bindType: n.support.transition.end,
            delegateType: n.support.transition.end,
            handle: function(t) {
                if (n(t.target).is(this)) return t.handleObj.handler.apply(this, arguments)
            }
        })
    })
} (jQuery); +
function(n) {
    "use strict";
    function u(i) {
        return this.each(function() {
            var r = n(this),
            u = r.data("bs.alert");
            u || r.data("bs.alert", u = new t(this));
            "string" == typeof i && u[i].call(r)
        })
    }
    var i = '[data-dismiss="alert"]',
    t = function(t) {
        n(t).on("click", i, this.close)
    },
    r;
    t.VERSION = "3.2.0";
    t.prototype.close = function(t) {
        function f() {
            i.detach().trigger("closed.bs.alert").remove()
        }
        var u = n(this),
        r = u.attr("data-target"),
        i;
        r || (r = u.attr("href"), r = r && r.replace(/.*(?=#[^\s]*$)/, ""));
        i = n(r);
        t && t.preventDefault();
        i.length || (i = u.hasClass("alert") ? u: u.parent());
        i.trigger(t = n.Event("close.bs.alert"));
        t.isDefaultPrevented() || (i.removeClass("in"), n.support.transition && i.hasClass("fade") ? i.one("bsTransitionEnd", f).emulateTransitionEnd(150) : f())
    };
    r = n.fn.alert;
    n.fn.alert = u;
    n.fn.alert.Constructor = t;
    n.fn.alert.noConflict = function() {
        return n.fn.alert = r,
        this
    };
    n(document).on("click.bs.alert.data-api", i, t.prototype.close)
} (jQuery); +
function(n) {
    "use strict";
    function i(i) {
        return this.each(function() {
            var u = n(this),
            r = u.data("bs.button"),
            f = "object" == typeof i && i;
            r || u.data("bs.button", r = new t(this, f));
            "toggle" == i ? r.toggle() : i && r.setState(i)
        })
    }
    var t = function(i, r) {
        this.$element = n(i);
        this.options = n.extend({},
        t.DEFAULTS, r);
        this.isLoading = !1
    },
    r;
    t.VERSION = "3.2.0";
    t.DEFAULTS = {
        loadingText: "loading..."
    };
    t.prototype.setState = function(t) {
        var r = "disabled",
        i = this.$element,
        f = i.is("input") ? "val": "html",
        u = i.data();
        t += "Text";
        null == u.resetText && i.data("resetText", i[f]());
        i[f](null == u[t] ? this.options[t] : u[t]);
        setTimeout(n.proxy(function() {
            "loadingText" == t ? (this.isLoading = !0, i.addClass(r).attr(r, r)) : this.isLoading && (this.isLoading = !1, i.removeClass(r).removeAttr(r))
        },
        this), 0)
    };
    t.prototype.toggle = function() {
        var t = !0,
        i = this.$element.closest('[data-toggle="buttons"]'),
        n;
        i.length && (n = this.$element.find("input"), "radio" == n.prop("type") && (n.prop("checked") && this.$element.hasClass("active") ? t = !1 : i.find(".active").removeClass("active")), t && n.prop("checked", !this.$element.hasClass("active")).trigger("change"));
        t && this.$element.toggleClass("active")
    };
    r = n.fn.button;
    n.fn.button = i;
    n.fn.button.Constructor = t;
    n.fn.button.noConflict = function() {
        return n.fn.button = r,
        this
    };
    n(document).on("click.bs.button.data-api", '[data-toggle^="button"]',
    function(t) {
        var r = n(t.target);
        r.hasClass("btn") || (r = r.closest(".btn"));
        i.call(r, "toggle");
        t.preventDefault()
    })
} (jQuery); +
function(n) {
    "use strict";
    function i(i) {
        return this.each(function() {
            var u = n(this),
            r = u.data("bs.carousel"),
            f = n.extend({},
            t.DEFAULTS, u.data(), "object" == typeof i && i),
            e = "string" == typeof i ? i: f.slide;
            r || u.data("bs.carousel", r = new t(this, f));
            "number" == typeof i ? r.to(i) : e ? r[e]() : f.interval && r.pause().cycle()
        })
    }
    var t = function(t, i) {
        this.$element = n(t).on("keydown.bs.carousel", n.proxy(this.keydown, this));
        this.$indicators = this.$element.find(".carousel-indicators");
        this.options = i;
        this.paused = this.sliding = this.interval = this.$active = this.$items = null;
        "hover" == this.options.pause && this.$element.on("mouseenter.bs.carousel", n.proxy(this.pause, this)).on("mouseleave.bs.carousel", n.proxy(this.cycle, this))
    },
    r;
    t.VERSION = "3.2.0";
    t.DEFAULTS = {
        interval: 5e3,
        pause: "hover",
        wrap: !0
    };
    t.prototype.keydown = function(n) {
        switch (n.which) {
        case 37:
            this.prev();
            break;
        case 39:
            this.next();
            break;
        default:
            return
        }
        n.preventDefault()
    };
    t.prototype.cycle = function(t) {
        return t || (this.paused = !1),
        this.interval && clearInterval(this.interval),
        this.options.interval && !this.paused && (this.interval = setInterval(n.proxy(this.next, this), this.options.interval)),
        this
    };
    t.prototype.getItemIndex = function(n) {
        return this.$items = n.parent().children(".item"),
        this.$items.index(n || this.$active)
    };
    t.prototype.to = function(t) {
        var r = this,
        i = this.getItemIndex(this.$active = this.$element.find(".item.active"));
        if (! (t > this.$items.length - 1) && !(0 > t)) return this.sliding ? this.$element.one("slid.bs.carousel",
        function() {
            r.to(t)
        }) : i == t ? this.pause().cycle() : this.slide(t > i ? "next": "prev", n(this.$items[t]))
    };
    t.prototype.pause = function(t) {
        return t || (this.paused = !0),
        this.$element.find(".next, .prev").length && n.support.transition && (this.$element.trigger(n.support.transition.end), this.cycle(!0)),
        this.interval = clearInterval(this.interval),
        this
    };
    t.prototype.next = function() {
        if (!this.sliding) return this.slide("next")
    };
    t.prototype.prev = function() {
        if (!this.sliding) return this.slide("prev")
    };
    t.prototype.slide = function(t, i) {
        var u = this.$element.find(".item.active"),
        r = i || u[t](),
        c = this.interval,
        f = "next" == t ? "left": "right",
        a = "next" == t ? "first": "last",
        l = this,
        e,
        o,
        s,
        h;
        if (!r.length) {
            if (!this.options.wrap) return;
            r = this.$element.find(".item")[a]()
        }
        return r.hasClass("active") ? this.sliding = !1 : (e = r[0], o = n.Event("slide.bs.carousel", {
            relatedTarget: e,
            direction: f
        }), (this.$element.trigger(o), !o.isDefaultPrevented()) ? ((this.sliding = !0, c && this.pause(), this.$indicators.length) && (this.$indicators.find(".active").removeClass("active"), s = n(this.$indicators.children()[this.getItemIndex(r)]), s && s.addClass("active")), h = n.Event("slid.bs.carousel", {
            relatedTarget: e,
            direction: f
        }), n.support.transition && this.$element.hasClass("slide") ? (r.addClass(t), r[0].offsetWidth, u.addClass(f), r.addClass(f), u.one("bsTransitionEnd",
        function() {
            r.removeClass([t, f].join(" ")).addClass("active");
            u.removeClass(["active", f].join(" "));
            l.sliding = !1;
            setTimeout(function() {
                l.$element.trigger(h)
            },
            0)
        }).emulateTransitionEnd(1e3 * u.css("transition-duration").slice(0, -1))) : (u.removeClass("active"), r.addClass("active"), this.sliding = !1, this.$element.trigger(h)), c && this.cycle(), this) : void 0)
    };
    r = n.fn.carousel;
    n.fn.carousel = i;
    n.fn.carousel.Constructor = t;
    n.fn.carousel.noConflict = function() {
        return n.fn.carousel = r,
        this
    };
    n(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]",
    function(t) {
        var o, r = n(this),
        u = n(r.attr("data-target") || (o = r.attr("href")) && o.replace(/.*(?=#[^\s]+$)/, "")),
        e,
        f;
        u.hasClass("carousel") && (e = n.extend({},
        u.data(), r.data()), f = r.attr("data-slide-to"), f && (e.interval = !1), i.call(u, e), f && u.data("bs.carousel").to(f), t.preventDefault())
    });
    n(window).on("load",
    function() {
        n('[data-ride="carousel"]').each(function() {
            var t = n(this);
            i.call(t, t.data())
        })
    })
} (jQuery); +
function(n) {
    "use strict";
    function i(i) {
        return this.each(function() {
            var u = n(this),
            r = u.data("bs.collapse"),
            f = n.extend({},
            t.DEFAULTS, u.data(), "object" == typeof i && i); ! r && f.toggle && "show" == i && (i = !i);
            r || u.data("bs.collapse", r = new t(this, f));
            "string" == typeof i && r[i]()
        })
    }
    var t = function(i, r) {
        this.$element = n(i);
        this.options = n.extend({},
        t.DEFAULTS, r);
        this.transitioning = null;
        this.options.parent && (this.$parent = n(this.options.parent));
        this.options.toggle && this.toggle()
    },
    r;
    t.VERSION = "3.2.0";
    t.DEFAULTS = {
        toggle: !0
    };
    t.prototype.dimension = function() {
        var n = this.$element.hasClass("width");
        return n ? "width": "height"
    };
    t.prototype.show = function() {
        var f, t, u, r, e, o;
        if (!this.transitioning && !this.$element.hasClass("in") && (f = n.Event("show.bs.collapse"), this.$element.trigger(f), !f.isDefaultPrevented())) {
            if (t = this.$parent && this.$parent.find("> .panel > .in"), t && t.length) {
                if (u = t.data("bs.collapse"), u && u.transitioning) return;
                i.call(t, "hide");
                u || t.data("bs.collapse", null)
            }
            if (r = this.dimension(), this.$element.removeClass("collapse").addClass("collapsing")[r](0), this.transitioning = 1, e = function() {
                this.$element.removeClass("collapsing").addClass("collapse in")[r]("");
                this.transitioning = 0;
                this.$element.trigger("shown.bs.collapse")
            },
            !n.support.transition) return e.call(this);
            o = n.camelCase(["scroll", r].join("-"));
            this.$element.one("bsTransitionEnd", n.proxy(e, this)).emulateTransitionEnd(350)[r](this.$element[0][o])
        }
    };
    t.prototype.hide = function() {
        var i, t, r;
        if (!this.transitioning && this.$element.hasClass("in") && (i = n.Event("hide.bs.collapse"), this.$element.trigger(i), !i.isDefaultPrevented())) return t = this.dimension(),
        this.$element[t](this.$element[t]())[0].offsetHeight,
        this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),
        this.transitioning = 1,
        r = function() {
            this.transitioning = 0;
            this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")
        },
        n.support.transition ? void this.$element[t](0).one("bsTransitionEnd", n.proxy(r, this)).emulateTransitionEnd(350) : r.call(this)
    };
    t.prototype.toggle = function() {
        this[this.$element.hasClass("in") ? "hide": "show"]()
    };
    r = n.fn.collapse;
    n.fn.collapse = i;
    n.fn.collapse.Constructor = t;
    n.fn.collapse.noConflict = function() {
        return n.fn.collapse = r,
        this
    };
    n(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]',
    function(t) {
        var o, r = n(this),
        h = r.attr("data-target") || t.preventDefault() || (o = r.attr("href")) && o.replace(/.*(?=#[^\s]+$)/, ""),
        u = n(h),
        f = u.data("bs.collapse"),
        c = f ? "toggle": r.data(),
        e = r.attr("data-parent"),
        s = e && n(e);
        f && f.transitioning || (s && s.find('[data-toggle="collapse"][data-parent="' + e + '"]').not(r).addClass("collapsed"), r[u.hasClass("in") ? "addClass": "removeClass"]("collapsed"));
        i.call(u, c)
    })
} (jQuery); +
function(n) {
    "use strict";
    function r(t) {
        t && 3 === t.which || (n(o).remove(), n(i).each(function() {
            var i = u(n(this)),
            r = {
                relatedTarget: this
            };
            i.hasClass("open") && (i.trigger(t = n.Event("hide.bs.dropdown", r)), t.isDefaultPrevented() || i.removeClass("open").trigger("hidden.bs.dropdown", r))
        }))
    }
    function u(t) {
        var i = t.attr("data-target"),
        r;
        return i || (i = t.attr("href"), i = i && /#[A-Za-z]/.test(i) && i.replace(/.*(?=#[^\s]*$)/, "")),
        r = i && n(i),
        r && r.length ? r: t.parent()
    }
    function e(i) {
        return this.each(function() {
            var r = n(this),
            u = r.data("bs.dropdown");
            u || r.data("bs.dropdown", u = new t(this));
            "string" == typeof i && u[i].call(r)
        })
    }
    var o = ".dropdown-backdrop",
    i = '[data-toggle="dropdown"]',
    t = function(t) {
        n(t).on("click.bs.dropdown", this.toggle)
    },
    f;
    t.VERSION = "3.2.0";
    t.prototype.toggle = function(t) {
        var f = n(this),
        i,
        o,
        e;
        if (!f.is(".disabled, :disabled")) {
            if (i = u(f), o = i.hasClass("open"), r(), !o) {
                if ("ontouchstart" in document.documentElement && !i.closest(".navbar-nav").length && n('<div class="dropdown-backdrop"/>').insertAfter(n(this)).on("click", r), e = {
                    relatedTarget: this
                },
                i.trigger(t = n.Event("show.bs.dropdown", e)), t.isDefaultPrevented()) return;
                f.trigger("focus");
                i.toggleClass("open").trigger("shown.bs.dropdown", e)
            }
            return ! 1
        }
    };
    t.prototype.keydown = function(t) {
        var e, o, s, h, f, r;
        if (/(38|40|27)/.test(t.keyCode) && (e = n(this), t.preventDefault(), t.stopPropagation(), !e.is(".disabled, :disabled"))) {
            if (o = u(e), s = o.hasClass("open"), !s || s && 27 == t.keyCode) return 27 == t.which && o.find(i).trigger("focus"),
            e.trigger("click");
            h = " li:not(.divider):visible a";
            f = o.find('[role="menu"]' + h + ', [role="listbox"]' + h);
            f.length && (r = f.index(f.filter(":focus")), 38 == t.keyCode && r > 0 && r--, 40 == t.keyCode && r < f.length - 1 && r++, ~r || (r = 0), f.eq(r).trigger("focus"))
        }
    };
    f = n.fn.dropdown;
    n.fn.dropdown = e;
    n.fn.dropdown.Constructor = t;
    n.fn.dropdown.noConflict = function() {
        return n.fn.dropdown = f,
        this
    };
    n(document).on("click.bs.dropdown.data-api", r).on("click.bs.dropdown.data-api", ".dropdown form",
    function(n) {
        n.stopPropagation()
    }).on("click.bs.dropdown.data-api", i, t.prototype.toggle).on("keydown.bs.dropdown.data-api", i + ', [role="menu"], [role="listbox"]', t.prototype.keydown)
} (jQuery); +
function(n) {
    "use strict";
    function i(i, r) {
        return this.each(function() {
            var f = n(this),
            u = f.data("bs.modal"),
            e = n.extend({},
            t.DEFAULTS, f.data(), "object" == typeof i && i);
            u || f.data("bs.modal", u = new t(this, e));
            "string" == typeof i ? u[i](r) : e.show && u.show(r)
        })
    }
    var t = function(t, i) {
        this.options = i;
        this.$body = n(document.body);
        this.$element = n(t);
        this.$backdrop = this.isShown = null;
        this.scrollbarWidth = 0;
        this.options.remote && this.$element.find(".modal-content").load(this.options.remote, n.proxy(function() {
            this.$element.trigger("loaded.bs.modal")
        },
        this))
    },
    r;
    t.VERSION = "3.2.0";
    t.DEFAULTS = {
        backdrop: !0,
        keyboard: !0,
        show: !0
    };
    t.prototype.toggle = function(n) {
        return this.isShown ? this.hide() : this.show(n)
    };
    t.prototype.show = function(t) {
        var i = this,
        r = n.Event("show.bs.modal", {
            relatedTarget: t
        });
        this.$element.trigger(r);
        this.isShown || r.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.$body.addClass("modal-open"), this.setScrollbar(), this.escape(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', n.proxy(this.hide, this)), this.backdrop(function() {
            var u = n.support.transition && i.$element.hasClass("fade"),
            r;
            i.$element.parent().length || i.$element.appendTo(i.$body);
            i.$element.show().scrollTop(0);
            u && i.$element[0].offsetWidth;
            i.$element.addClass("in").attr("aria-hidden", !1);
            i.enforceFocus();
            r = n.Event("shown.bs.modal", {
                relatedTarget: t
            });
            u ? i.$element.find(".modal-dialog").one("bsTransitionEnd",
            function() {
                i.$element.trigger("focus").trigger(r)
            }).emulateTransitionEnd(300) : i.$element.trigger("focus").trigger(r)
        }))
    };
    t.prototype.hide = function(t) {
        t && t.preventDefault();
        t = n.Event("hide.bs.modal");
        this.$element.trigger(t);
        this.isShown && !t.isDefaultPrevented() && (this.isShown = !1, this.$body.removeClass("modal-open"), this.resetScrollbar(), this.escape(), n(document).off("focusin.bs.modal"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.bs.modal"), n.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", n.proxy(this.hideModal, this)).emulateTransitionEnd(300) : this.hideModal())
    };
    t.prototype.enforceFocus = function() {
        n(document).off("focusin.bs.modal").on("focusin.bs.modal", n.proxy(function(n) {
            this.$element[0] === n.target || this.$element.has(n.target).length || this.$element.trigger("focus")
        },
        this))
    };
    t.prototype.escape = function() {
        this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.bs.modal", n.proxy(function(n) {
            27 == n.which && this.hide()
        },
        this)) : this.isShown || this.$element.off("keyup.dismiss.bs.modal")
    };
    t.prototype.hideModal = function() {
        var n = this;
        this.$element.hide();
        this.backdrop(function() {
            n.$element.trigger("hidden.bs.modal")
        })
    };
    t.prototype.removeBackdrop = function() {
        this.$backdrop && this.$backdrop.remove();
        this.$backdrop = null
    };
    t.prototype.backdrop = function(t) {
        var f = this,
        u = this.$element.hasClass("fade") ? "fade": "",
        i,
        r;
        if (this.isShown && this.options.backdrop) {
            if (i = n.support.transition && u, this.$backdrop = n('<div class="modal-backdrop ' + u + '" />').appendTo(this.$body), this.$element.on("click.dismiss.bs.modal", n.proxy(function(n) {
                n.target === n.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this))
            },
            this)), i && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !t) return;
            i ? this.$backdrop.one("bsTransitionEnd", t).emulateTransitionEnd(150) : t()
        } else ! this.isShown && this.$backdrop ? (this.$backdrop.removeClass("in"), r = function() {
            f.removeBackdrop();
            t && t()
        },
        n.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", r).emulateTransitionEnd(150) : r()) : t && t()
    };
    t.prototype.checkScrollbar = function() {
        document.body.clientWidth >= window.innerWidth || (this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar())
    };
    t.prototype.setScrollbar = function() {
        var n = parseInt(this.$body.css("padding-right") || 0, 10);
        this.scrollbarWidth && this.$body.css("padding-right", n + this.scrollbarWidth)
    };
    t.prototype.resetScrollbar = function() {
        this.$body.css("padding-right", "")
    };
    t.prototype.measureScrollbar = function() {
        var n = document.createElement("div"),
        t;
        return n.className = "modal-scrollbar-measure",
        this.$body.append(n),
        t = n.offsetWidth - n.clientWidth,
        this.$body[0].removeChild(n),
        t
    };
    r = n.fn.modal;
    n.fn.modal = i;
    n.fn.modal.Constructor = t;
    n.fn.modal.noConflict = function() {
        return n.fn.modal = r,
        this
    };
    n(document).on("click.bs.modal.data-api", '[data-toggle="modal"]',
    function(t) {
        var r = n(this),
        f = r.attr("href"),
        u = n(r.attr("data-target") || f && f.replace(/.*(?=#[^\s]+$)/, "")),
        e = u.data("bs.modal") ? "toggle": n.extend({
            remote: !/#/.test(f) && f
        },
        u.data(), r.data());
        r.is("a") && t.preventDefault();
        u.one("show.bs.modal",
        function(n) {
            n.isDefaultPrevented() || u.one("hidden.bs.modal",
            function() {
                r.is(":visible") && r.trigger("focus")
            })
        });
        i.call(u, e, this)
    })
} (jQuery); +
function(n) {
    "use strict";
    function r(i) {
        return this.each(function() {
            var u = n(this),
            r = u.data("bs.tooltip"),
            f = "object" == typeof i && i; (r || "destroy" != i) && (r || u.data("bs.tooltip", r = new t(this, f)), "string" == typeof i && r[i]())
        })
    }
    var t = function(n, t) {
        this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null;
        this.init("tooltip", n, t)
    },
    i;
    t.VERSION = "3.2.0";
    t.DEFAULTS = {
        animation: !0,
        placement: "top",
        selector: !1,
        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"><\/div><div class="tooltip-inner"><\/div><\/div>',
        trigger: "hover focus",
        title: "",
        delay: 0,
        html: !1,
        container: !1,
        viewport: {
            selector: "body",
            padding: 0
        }
    };
    t.prototype.init = function(t, i, r) {
        var f, e, u, o, s;
        for (this.enabled = !0, this.type = t, this.$element = n(i), this.options = this.getOptions(r), this.$viewport = this.options.viewport && n(this.options.viewport.selector || this.options.viewport), f = this.options.trigger.split(" "), e = f.length; e--;) if (u = f[e], "click" == u) this.$element.on("click." + this.type, this.options.selector, n.proxy(this.toggle, this));
        else "manual" != u && (o = "hover" == u ? "mouseenter": "focusin", s = "hover" == u ? "mouseleave": "focusout", this.$element.on(o + "." + this.type, this.options.selector, n.proxy(this.enter, this)), this.$element.on(s + "." + this.type, this.options.selector, n.proxy(this.leave, this)));
        this.options.selector ? this._options = n.extend({},
        this.options, {
            trigger: "manual",
            selector: ""
        }) : this.fixTitle()
    };
    t.prototype.getDefaults = function() {
        return t.DEFAULTS
    };
    t.prototype.getOptions = function(t) {
        return t = n.extend({},
        this.getDefaults(), this.$element.data(), t),
        t.delay && "number" == typeof t.delay && (t.delay = {
            show: t.delay,
            hide: t.delay
        }),
        t
    };
    t.prototype.getDelegateOptions = function() {
        var t = {},
        i = this.getDefaults();
        return this._options && n.each(this._options,
        function(n, r) {
            i[n] != r && (t[n] = r)
        }),
        t
    };
    t.prototype.enter = function(t) {
        var i = t instanceof this.constructor ? t: n(t.currentTarget).data("bs." + this.type);
        return i || (i = new this.constructor(t.currentTarget, this.getDelegateOptions()), n(t.currentTarget).data("bs." + this.type, i)),
        clearTimeout(i.timeout),
        i.hoverState = "in",
        i.options.delay && i.options.delay.show ? void(i.timeout = setTimeout(function() {
            "in" == i.hoverState && i.show()
        },
        i.options.delay.show)) : i.show()
    };
    t.prototype.leave = function(t) {
        var i = t instanceof this.constructor ? t: n(t.currentTarget).data("bs." + this.type);
        return i || (i = new this.constructor(t.currentTarget, this.getDelegateOptions()), n(t.currentTarget).data("bs." + this.type, i)),
        clearTimeout(i.timeout),
        i.hoverState = "out",
        i.options.delay && i.options.delay.hide ? void(i.timeout = setTimeout(function() {
            "out" == i.hoverState && i.hide()
        },
        i.options.delay.hide)) : i.hide()
    };
    t.prototype.show = function() {
        var h = n.Event("show.bs." + this.type),
        c,
        y,
        s;
        if (this.hasContent() && this.enabled) {
            if (this.$element.trigger(h), c = n.contains(document.documentElement, this.$element[0]), h.isDefaultPrevented() || !c) return;
            var f = this,
            i = this.tip(),
            l = this.getUID(this.type);
            this.setContent();
            i.attr("id", l);
            this.$element.attr("aria-describedby", l);
            this.options.animation && i.addClass("fade");
            var t = "function" == typeof this.options.placement ? this.options.placement.call(this, i[0], this.$element[0]) : this.options.placement,
            a = /\s?auto?\s?/i,
            v = a.test(t);
            v && (t = t.replace(a, "") || "top");
            i.detach().css({
                top: 0,
                left: 0,
                display: "block"
            }).addClass(t).data("bs." + this.type, this);
            this.options.container ? i.appendTo(this.options.container) : i.insertAfter(this.$element);
            var r = this.getPosition(),
            e = i[0].offsetWidth,
            o = i[0].offsetHeight;
            if (v) {
                var p = t,
                w = this.$element.parent(),
                u = this.getPosition(w);
                t = "bottom" == t && r.top + r.height + o - u.scroll > u.height ? "top": "top" == t && r.top - u.scroll - o < 0 ? "bottom": "right" == t && r.right + e > u.width ? "left": "left" == t && r.left - e < u.left ? "right": t;
                i.removeClass(p).addClass(t)
            }
            y = this.getCalculatedOffset(t, r, e, o);
            this.applyPlacement(y, t);
            s = function() {
                f.$element.trigger("shown.bs." + f.type);
                f.hoverState = null
            };
            n.support.transition && this.$tip.hasClass("fade") ? i.one("bsTransitionEnd", s).emulateTransitionEnd(150) : s()
        }
    };
    t.prototype.applyPlacement = function(t, i) {
        var r = this.tip(),
        c = r[0].offsetWidth,
        e = r[0].offsetHeight,
        o = parseInt(r.css("margin-top"), 10),
        s = parseInt(r.css("margin-left"), 10),
        h,
        f,
        u;
        isNaN(o) && (o = 0);
        isNaN(s) && (s = 0);
        t.top = t.top + o;
        t.left = t.left + s;
        n.offset.setOffset(r[0], n.extend({
            using: function(n) {
                r.css({
                    top: Math.round(n.top),
                    left: Math.round(n.left)
                })
            }
        },
        t), 0);
        r.addClass("in");
        h = r[0].offsetWidth;
        f = r[0].offsetHeight;
        "top" == i && f != e && (t.top = t.top + e - f);
        u = this.getViewportAdjustedDelta(i, t, h, f);
        u.left ? t.left += u.left: t.top += u.top;
        var l = u.left ? 2 * u.left - c + h: 2 * u.top - e + f,
        a = u.left ? "left": "top",
        v = u.left ? "offsetWidth": "offsetHeight";
        r.offset(t);
        this.replaceArrow(l, r[0][v], a)
    };
    t.prototype.replaceArrow = function(n, t, i) {
        this.arrow().css(i, n ? 50 * (1 - n / t) + "%": "")
    };
    t.prototype.setContent = function() {
        var n = this.tip(),
        t = this.getTitle();
        n.find(".tooltip-inner")[this.options.html ? "html": "text"](t);
        n.removeClass("fade in top bottom left right")
    };
    t.prototype.hide = function() {
        function r() {
            "in" != t.hoverState && i.detach();
            t.$element.trigger("hidden.bs." + t.type)
        }
        var t = this,
        i = this.tip(),
        u = n.Event("hide.bs." + this.type);
        return this.$element.removeAttr("aria-describedby"),
        this.$element.trigger(u),
        u.isDefaultPrevented() ? void 0 : (i.removeClass("in"), n.support.transition && this.$tip.hasClass("fade") ? i.one("bsTransitionEnd", r).emulateTransitionEnd(150) : r(), this.hoverState = null, this)
    };
    t.prototype.fixTitle = function() {
        var n = this.$element; (n.attr("title") || "string" != typeof n.attr("data-original-title")) && n.attr("data-original-title", n.attr("title") || "").attr("title", "")
    };
    t.prototype.hasContent = function() {
        return this.getTitle()
    };
    t.prototype.getPosition = function(t) {
        t = t || this.$element;
        var r = t[0],
        i = "BODY" == r.tagName;
        return n.extend({},
        "function" == typeof r.getBoundingClientRect ? r.getBoundingClientRect() : null, {
            scroll: i ? document.documentElement.scrollTop || document.body.scrollTop: t.scrollTop(),
            width: i ? n(window).width() : t.outerWidth(),
            height: i ? n(window).height() : t.outerHeight()
        },
        i ? {
            top: 0,
            left: 0
        }: t.offset())
    };
    t.prototype.getCalculatedOffset = function(n, t, i, r) {
        return "bottom" == n ? {
            top: t.top + t.height,
            left: t.left + t.width / 2 - i / 2
        }: "top" == n ? {
            top: t.top - r,
            left: t.left + t.width / 2 - i / 2
        }: "left" == n ? {
            top: t.top + t.height / 2 - r / 2,
            left: t.left - i
        }: {
            top: t.top + t.height / 2 - r / 2,
            left: t.left + t.width
        }
    };
    t.prototype.getViewportAdjustedDelta = function(n, t, i, r) {
        var f = {
            top: 0,
            left: 0
        },
        e,
        u,
        o,
        s,
        h,
        c;
        return this.$viewport ? (e = this.options.viewport && this.options.viewport.padding || 0, u = this.getPosition(this.$viewport), /right|left/.test(n) ? (o = t.top - e - u.scroll, s = t.top + e - u.scroll + r, o < u.top ? f.top = u.top - o: s > u.top + u.height && (f.top = u.top + u.height - s)) : (h = t.left - e, c = t.left + e + i, h < u.left ? f.left = u.left - h: c > u.width && (f.left = u.left + u.width - c)), f) : f
    };
    t.prototype.getTitle = function() {
        var t = this.$element,
        n = this.options;
        return t.attr("data-original-title") || ("function" == typeof n.title ? n.title.call(t[0]) : n.title)
    };
    t.prototype.getUID = function(n) {
        do n += ~~ (1e6 * Math.random());
        while (document.getElementById(n));
        return n
    };
    t.prototype.tip = function() {
        return this.$tip = this.$tip || n(this.options.template)
    };
    t.prototype.arrow = function() {
        return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
    };
    t.prototype.validate = function() {
        this.$element[0].parentNode || (this.hide(), this.$element = null, this.options = null)
    };
    t.prototype.enable = function() {
        this.enabled = !0
    };
    t.prototype.disable = function() {
        this.enabled = !1
    };
    t.prototype.toggleEnabled = function() {
        this.enabled = !this.enabled
    };
    t.prototype.toggle = function(t) {
        var i = this;
        t && (i = n(t.currentTarget).data("bs." + this.type), i || (i = new this.constructor(t.currentTarget, this.getDelegateOptions()), n(t.currentTarget).data("bs." + this.type, i)));
        i.tip().hasClass("in") ? i.leave(i) : i.enter(i)
    };
    t.prototype.destroy = function() {
        clearTimeout(this.timeout);
        this.hide().$element.off("." + this.type).removeData("bs." + this.type)
    };
    i = n.fn.tooltip;
    n.fn.tooltip = r;
    n.fn.tooltip.Constructor = t;
    n.fn.tooltip.noConflict = function() {
        return n.fn.tooltip = i,
        this
    }
} (jQuery); +
function(n) {
    "use strict";
    function r(i) {
        return this.each(function() {
            var u = n(this),
            r = u.data("bs.popover"),
            f = "object" == typeof i && i; (r || "destroy" != i) && (r || u.data("bs.popover", r = new t(this, f)), "string" == typeof i && r[i]())
        })
    }
    var t = function(n, t) {
        this.init("popover", n, t)
    },
    i;
    if (!n.fn.tooltip) throw new Error("Popover requires tooltip.js");
    t.VERSION = "3.2.0";
    t.DEFAULTS = n.extend({},
    n.fn.tooltip.Constructor.DEFAULTS, {
        placement: "right",
        trigger: "click",
        content: "",
        template: '<div class="popover" role="tooltip"><div class="arrow"><\/div><h3 class="popover-title"><\/h3><div class="popover-content"><\/div><\/div>'
    });
    t.prototype = n.extend({},
    n.fn.tooltip.Constructor.prototype);
    t.prototype.constructor = t;
    t.prototype.getDefaults = function() {
        return t.DEFAULTS
    };
    t.prototype.setContent = function() {
        var n = this.tip(),
        i = this.getTitle(),
        t = this.getContent();
        n.find(".popover-title")[this.options.html ? "html": "text"](i);
        n.find(".popover-content").empty()[this.options.html ? "string" == typeof t ? "html": "append": "text"](t);
        n.removeClass("fade top bottom left right in");
        n.find(".popover-title").html() || n.find(".popover-title").hide()
    };
    t.prototype.hasContent = function() {
        return this.getTitle() || this.getContent()
    };
    t.prototype.getContent = function() {
        var t = this.$element,
        n = this.options;
        return t.attr("data-content") || ("function" == typeof n.content ? n.content.call(t[0]) : n.content)
    };
    t.prototype.arrow = function() {
        return this.$arrow = this.$arrow || this.tip().find(".arrow")
    };
    t.prototype.tip = function() {
        return this.$tip || (this.$tip = n(this.options.template)),
        this.$tip
    };
    i = n.fn.popover;
    n.fn.popover = r;
    n.fn.popover.Constructor = t;
    n.fn.popover.noConflict = function() {
        return n.fn.popover = i,
        this
    }
} (jQuery); +
function(n) {
    "use strict";
    function t(i, r) {
        var u = n.proxy(this.process, this);
        this.$body = n("body");
        this.$scrollElement = n(n(i).is("body") ? window: i);
        this.options = n.extend({},
        t.DEFAULTS, r);
        this.selector = (this.options.target || "") + " .nav li > a";
        this.offsets = [];
        this.targets = [];
        this.activeTarget = null;
        this.scrollHeight = 0;
        this.$scrollElement.on("scroll.bs.scrollspy", u);
        this.refresh();
        this.process()
    }
    function i(i) {
        return this.each(function() {
            var u = n(this),
            r = u.data("bs.scrollspy"),
            f = "object" == typeof i && i;
            r || u.data("bs.scrollspy", r = new t(this, f));
            "string" == typeof i && r[i]()
        })
    }
    t.VERSION = "3.2.0";
    t.DEFAULTS = {
        offset: 10
    };
    t.prototype.getScrollHeight = function() {
        return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
    };
    t.prototype.refresh = function() {
        var i = "offset",
        r = 0,
        t;
        n.isWindow(this.$scrollElement[0]) || (i = "position", r = this.$scrollElement.scrollTop());
        this.offsets = [];
        this.targets = [];
        this.scrollHeight = this.getScrollHeight();
        t = this;
        this.$body.find(this.selector).map(function() {
            var f = n(this),
            u = f.data("target") || f.attr("href"),
            t = /^#./.test(u) && n(u);
            return t && t.length && t.is(":visible") && [[t[i]().top + r, u]] || null
        }).sort(function(n, t) {
            return n[0] - t[0]
        }).each(function() {
            t.offsets.push(this[0]);
            t.targets.push(this[1])
        })
    };
    t.prototype.process = function() {
        var n, r = this.$scrollElement.scrollTop() + this.options.offset,
        f = this.getScrollHeight(),
        e = this.options.offset + f - this.$scrollElement.height(),
        t = this.offsets,
        i = this.targets,
        u = this.activeTarget;
        if (this.scrollHeight != f && this.refresh(), r >= e) return u != (n = i[i.length - 1]) && this.activate(n);
        if (u && r <= t[0]) return u != (n = i[0]) && this.activate(n);
        for (n = t.length; n--;) u != i[n] && r >= t[n] && (!t[n + 1] || r <= t[n + 1]) && this.activate(i[n])
    };
    t.prototype.activate = function(t) {
        this.activeTarget = t;
        n(this.selector).parentsUntil(this.options.target, ".active").removeClass("active");
        var r = this.selector + '[data-target="' + t + '"],' + this.selector + '[href="' + t + '"]',
        i = n(r).parents("li").addClass("active");
        i.parent(".dropdown-menu").length && (i = i.closest("li.dropdown").addClass("active"));
        i.trigger("activate.bs.scrollspy")
    };
    var r = n.fn.scrollspy;
    n.fn.scrollspy = i;
    n.fn.scrollspy.Constructor = t;
    n.fn.scrollspy.noConflict = function() {
        return n.fn.scrollspy = r,
        this
    };
    n(window).on("load.bs.scrollspy.data-api",
    function() {
        n('[data-spy="scroll"]').each(function() {
            var t = n(this);
            i.call(t, t.data())
        })
    })
} (jQuery); +
function(n) {
    "use strict";
    function i(i) {
        return this.each(function() {
            var u = n(this),
            r = u.data("bs.tab");
            r || u.data("bs.tab", r = new t(this));
            "string" == typeof i && r[i]()
        })
    }
    var t = function(t) {
        this.element = n(t)
    },
    r;
    t.VERSION = "3.2.0";
    t.prototype.show = function() {
        var t = this.element,
        e = t.closest("ul:not(.dropdown-menu)"),
        i = t.data("target"),
        r,
        u,
        f; (i || (i = t.attr("href"), i = i && i.replace(/.*(?=#[^\s]*$)/, "")), t.parent("li").hasClass("active")) || (r = e.find(".active:last a")[0], u = n.Event("show.bs.tab", {
            relatedTarget: r
        }), (t.trigger(u), u.isDefaultPrevented()) || (f = n(i), this.activate(t.closest("li"), e), this.activate(f, f.parent(),
        function() {
            t.trigger({
                type: "shown.bs.tab",
                relatedTarget: r
            })
        })))
    };
    t.prototype.activate = function(t, i, r) {
        function f() {
            u.removeClass("active").find("> .dropdown-menu > .active").removeClass("active");
            t.addClass("active");
            e ? (t[0].offsetWidth, t.addClass("in")) : t.removeClass("fade");
            t.parent(".dropdown-menu") && t.closest("li.dropdown").addClass("active");
            r && r()
        }
        var u = i.find("> .active"),
        e = r && n.support.transition && u.hasClass("fade");
        e ? u.one("bsTransitionEnd", f).emulateTransitionEnd(150) : f();
        u.removeClass("in")
    };
    r = n.fn.tab;
    n.fn.tab = i;
    n.fn.tab.Constructor = t;
    n.fn.tab.noConflict = function() {
        return n.fn.tab = r,
        this
    };
    n(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]',
    function(t) {
        t.preventDefault();
        i.call(n(this), "show")
    })
} (jQuery); +
function(n) {
    "use strict";
    function i(i) {
        return this.each(function() {
            var u = n(this),
            r = u.data("bs.affix"),
            f = "object" == typeof i && i;
            r || u.data("bs.affix", r = new t(this, f));
            "string" == typeof i && r[i]()
        })
    }
    var t = function(i, r) {
        this.options = n.extend({},
        t.DEFAULTS, r);
        this.$target = n(this.options.target).on("scroll.bs.affix.data-api", n.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", n.proxy(this.checkPositionWithEventLoop, this));
        this.$element = n(i);
        this.affixed = this.unpin = this.pinnedOffset = null;
        this.checkPosition()
    },
    r;
    t.VERSION = "3.2.0";
    t.RESET = "affix affix-top affix-bottom";
    t.DEFAULTS = {
        offset: 0,
        target: window
    };
    t.prototype.getPinnedOffset = function() {
        if (this.pinnedOffset) return this.pinnedOffset;
        this.$element.removeClass(t.RESET).addClass("affix");
        var n = this.$target.scrollTop(),
        i = this.$element.offset();
        return this.pinnedOffset = i.top - n
    };
    t.prototype.checkPositionWithEventLoop = function() {
        setTimeout(n.proxy(this.checkPosition, this), 1)
    };
    t.prototype.checkPosition = function() {
        var i, e, o;
        if (this.$element.is(":visible")) {
            var s = n(document).height(),
            h = this.$target.scrollTop(),
            c = this.$element.offset(),
            r = this.options.offset,
            f = r.top,
            u = r.bottom;
            "object" != typeof r && (u = f = r);
            "function" == typeof f && (f = r.top(this.$element));
            "function" == typeof u && (u = r.bottom(this.$element));
            i = null != this.unpin && h + this.unpin <= c.top ? !1 : null != u && c.top + this.$element.height() >= s - u ? "bottom": null != f && f >= h ? "top": !1;
            this.affixed !== i && (null != this.unpin && this.$element.css("top", ""), e = "affix" + (i ? "-" + i: ""), o = n.Event(e + ".bs.affix"), this.$element.trigger(o), o.isDefaultPrevented() || (this.affixed = i, this.unpin = "bottom" == i ? this.getPinnedOffset() : null, this.$element.removeClass(t.RESET).addClass(e).trigger(n.Event(e.replace("affix", "affixed"))), "bottom" == i && this.$element.offset({
                top: s - this.$element.height() - u
            })))
        }
    };
    r = n.fn.affix;
    n.fn.affix = i;
    n.fn.affix.Constructor = t;
    n.fn.affix.noConflict = function() {
        return n.fn.affix = r,
        this
    };
    n(window).on("load",
    function() {
        n('[data-spy="affix"]').each(function() {
            var r = n(this),
            t = r.data();
            t.offset = t.offset || {};
            t.offsetBottom && (t.offset.bottom = t.offsetBottom);
            t.offsetTop && (t.offset.top = t.offsetTop);
            i.call(r, t)
        })
    })
} (jQuery),
function(n) {
    jQuery.fn.extend({
        slimScroll: function(i) {
            var r = n.extend({
                width: "auto",
                height: "250px",
                size: "7px",
                color: "#000",
                position: "right",
                distance: "1px",
                start: "top",
                opacity: .4,
                alwaysVisible: !1,
                disableFadeOut: !1,
                railVisible: !1,
                railColor: "#333",
                railOpacity: .2,
                railDraggable: !0,
                railClass: "slimScrollRail",
                barClass: "slimScrollBar",
                wrapperClass: "slimScrollDiv",
                allowPageScroll: !1,
                wheelStep: 20,
                touchScrollStep: 200,
                borderRadius: "7px",
                railBorderRadius: "7px"
            },
            i);
            return this.each(function() {
                function v(t) {
                    if (y) {
                        t = t || window.event;
                        var i = 0;
                        t.wheelDelta && (i = -t.wheelDelta / 120);
                        t.detail && (i = t.detail / 3);
                        n(t.target || t.srcTarget || t.srcElement).closest("." + r.wrapperClass).is(u.parent()) && h(i, !0);
                        t.preventDefault && !o && t.preventDefault();
                        o || (t.returnValue = !1)
                    }
                }
                function h(n, t, i) {
                    o = !1;
                    var s = n,
                    h = u.outerHeight() - f.outerHeight();
                    t && (s = parseInt(f.css("top")) + n * parseInt(r.wheelStep) / 100 * f.outerHeight(), s = Math.min(Math.max(s, 0), h), s = 0 < n ? Math.ceil(s) : Math.floor(s), f.css({
                        top: s + "px"
                    }));
                    e = parseInt(f.css("top")) / (u.outerHeight() - f.outerHeight());
                    s = e * (u[0].scrollHeight - u.outerHeight());
                    i && (s = n, n = s / u[0].scrollHeight * u.outerHeight(), n = Math.min(Math.max(n, 0), h), f.css({
                        top: n + "px"
                    }));
                    u.scrollTop(s);
                    u.trigger("slimscrolling", ~~s);
                    b();
                    l()
                }
                function it() {
                    window.addEventListener ? (this.addEventListener("DOMMouseScroll", v, !1), this.addEventListener("mousewheel", v, !1), this.addEventListener("MozMousePixelScroll", v, !1)) : document.attachEvent("onmousewheel", v)
                }
                function w() {
                    p = Math.max(u.outerHeight() / u[0].scrollHeight * u.outerHeight(), rt);
                    f.css({
                        height: p + "px"
                    });
                    var n = p == u.outerHeight() ? "none": "block";
                    f.css({
                        display: n
                    })
                }
                function b() {
                    w();
                    clearTimeout(nt);
                    e == ~~e ? (o = r.allowPageScroll, tt != e && u.trigger("slimscroll", 0 == ~~e ? "top": "bottom")) : o = !1;
                    tt = e;
                    p >= u.outerHeight() ? o = !0 : (f.stop(!0, !0).fadeIn("fast"), r.railVisible && s.stop(!0, !0).fadeIn("fast"))
                }
                function l() {
                    r.alwaysVisible || (nt = setTimeout(function() {
                        r.disableFadeOut && y || k || d || (f.fadeOut("slow"), s.fadeOut("slow"))
                    },
                    1e3))
                }
                var y, k, d, nt, g, p, e, tt, rt = 30,
                o = !1,
                u = n(this),
                c;
                if (u.parent().hasClass(r.wrapperClass)) {
                    var a = u.scrollTop(),
                    f = u.parent().find("." + r.barClass),
                    s = u.parent().find("." + r.railClass);
                    if (w(), n.isPlainObject(i)) {
                        if ("height" in i && "auto" == i.height && (u.parent().css("height", "auto"), u.css("height", "auto"), c = u.parent().parent().height(), u.parent().css("height", c), u.css("height", c)), "scrollTo" in i) a = parseInt(r.scrollTo);
                        else if ("scrollBy" in i) a += parseInt(r.scrollBy);
                        else if ("destroy" in i) {
                            f.remove();
                            s.remove();
                            u.unwrap();
                            return
                        }
                        h(a, !1, !0)
                    }
                } else {
                    r.height = "auto" == r.height ? u.parent().height() : r.height;
                    a = n("<div><\/div>").addClass(r.wrapperClass).css({
                        position: "relative",
                        overflow: "hidden",
                        width: r.width,
                        height: r.height
                    });
                    u.css({
                        overflow: "hidden",
                        width: r.width,
                        height: r.height
                    });
                    var s = n("<div><\/div>").addClass(r.railClass).css({
                        width: r.size,
                        height: "100%",
                        position: "absolute",
                        top: 0,
                        display: r.alwaysVisible && r.railVisible ? "block": "none",
                        "border-radius": r.railBorderRadius,
                        background: r.railColor,
                        opacity: r.railOpacity,
                        zIndex: 90
                    }),
                    f = n("<div><\/div>").addClass(r.barClass).css({
                        background: r.color,
                        width: r.size,
                        position: "absolute",
                        top: 0,
                        opacity: r.opacity,
                        display: r.alwaysVisible ? "block": "none",
                        "border-radius": r.borderRadius,
                        BorderRadius: r.borderRadius,
                        MozBorderRadius: r.borderRadius,
                        WebkitBorderRadius: r.borderRadius,
                        zIndex: 99
                    }),
                    c = "right" == r.position ? {
                        right: r.distance
                    }: {
                        left: r.distance
                    };
                    s.css(c);
                    f.css(c);
                    u.wrap(a);
                    u.parent().append(f);
                    u.parent().append(s);
                    r.railDraggable && f.bind("mousedown",
                    function(i) {
                        var r = n(document);
                        return d = !0,
                        t = parseFloat(f.css("top")),
                        pageY = i.pageY,
                        r.bind("mousemove.slimscroll",
                        function(n) {
                            currTop = t + n.pageY - pageY;
                            f.css("top", currTop);
                            h(0, f.position().top, !1)
                        }),
                        r.bind("mouseup.slimscroll",
                        function() {
                            d = !1;
                            l();
                            r.unbind(".slimscroll")
                        }),
                        !1
                    }).bind("selectstart.slimscroll",
                    function(n) {
                        return n.stopPropagation(),
                        n.preventDefault(),
                        !1
                    });
                    s.hover(function() {
                        b()
                    },
                    function() {
                        l()
                    });
                    f.hover(function() {
                        k = !0
                    },
                    function() {
                        k = !1
                    });
                    u.hover(function() {
                        y = !0;
                        b();
                        l()
                    },
                    function() {
                        y = !1;
                        l()
                    });
                    u.bind("touchstart",
                    function(n) {
                        n.originalEvent.touches.length && (g = n.originalEvent.touches[0].pageY)
                    });
                    u.bind("touchmove",
                    function(n) {
                        o || n.originalEvent.preventDefault();
                        n.originalEvent.touches.length && (h((g - n.originalEvent.touches[0].pageY) / r.touchScrollStep, !0), g = n.originalEvent.touches[0].pageY)
                    });
                    w();
                    "bottom" === r.start ? (f.css({
                        top: u.outerHeight() - f.outerHeight()
                    }), h(0, !0)) : "top" !== r.start && (h(n(r.start).position().top, null, !0), r.alwaysVisible || f.hide());
                    it()
                }
            }),
            this
        }
    });
    jQuery.fn.extend({
        slimscroll: jQuery.fn.slimScroll
    })
} (jQuery); !
function(n) {
    var o, p = n(window),
    r = {},
    i = [],
    f = [],
    e = !1,
    s = !1,
    h = null,
    c = null,
    l = null,
    a = null,
    v = "_open",
    w = "_close",
    y = null,
    t = {
        _init: function(r) {
            var u = n(r),
            e = u.data("popupoptions");
            f[r.id] = !1;
            i[r.id] = 0;
            u.data("popup-initialized") || (u.attr("data-popup-initialized", "true"), t._initonce(r));
            e.autoopen && setTimeout(function() {
                t.show(r, 0)
            },
            0)
        },
        _initonce: function(i) {
            var u, s = n("body"),
            r = $el.data("popupoptions"),
            h,
            c,
            l,
            f,
            e,
            y; (a = parseInt(s.css("margin-right"), 10), "tooltip" == r.type && (r.background = !1, r.scrolllock = !1), r.scrolllock) && "undefined" == typeof o && (h = n('<div style="width:50px;height:50px;overflow:auto"><div/><\/div>').appendTo("body"), c = h.children(), o = c.innerWidth() - c.height(99).innerWidth(), h.remove()); ($el.attr("id") || $el.attr("id", "j-popup-" + parseInt(1e8 * Math.random())), $el.addClass("popup_content"), s.prepend(i), $el.wrap('<div id="' + i.id + '_wrapper" class="popup_wrapper" />'), u = n("#" + i.id + "_wrapper"), u.css({
                opacity: 0,
                visibility: "hidden",
                position: "absolute",
                overflow: "auto"
            }), $el.css({
                opacity: 0,
                visibility: "hidden",
                display: "inline-block"
            }), r.setzindex && !r.autozindex && u.css("z-index", "2001"), r.outline || $el.css("outline", "none"), r.transition && ($el.css("transition", r.transition), u.css("transition", r.transition)), n(i).attr("aria-hidden", !0), r.background && !n("#" + i.id + "_background").length) && (l = '<div id="' + i.id + '_background" class="popup_background"><\/div>', s.prepend(l), f = n("#" + i.id + "_background"), f.css({
                opacity: 0,
                visibility: "hidden",
                backgroundColor: r.color,
                position: "fixed",
                top: 0,
                right: 0,
                bottom: 0,
                left: 0
            }), r.setzindex && !r.autozindex && f.css("z-index", "2000"), r.transition && f.css("transition", r.transition));
            "overlay" == r.type && ($el.css({
                textAlign: "left",
                position: "relative",
                verticalAlign: "middle"
            }), u.css({
                position: "fixed",
                top: 0,
                right: 0,
                left: 0,
                bottom: 0,
                textAlign: "center"
            }), u.append('<div class="popup_align" />'), n(".popup_align").css({
                display: "inline-block",
                verticalAlign: "middle",
                height: "100%"
            }));
            $el.attr("role", "dialog");
            e = r.openelement ? r.openelement: "." + i.id + v;
            n(e).each(function(t, i) {
                n(i).attr("data-popup-ordinal", t);
                n(i).attr("id") || n(i).attr("id", "open_" + parseInt(1e8 * Math.random(), 10))
            });
            $el.attr("aria-labelledby") || $el.attr("aria-label") || $el.attr("aria-labelledby", n(e).attr("id"));
            n(document).on("click", e,
            function(r) {
                if (!$el.data("popup-visible")) {
                    var u = n(this).data("popup-ordinal");
                    setTimeout(function() {
                        t.show(i, u)
                    },
                    0);
                    r.preventDefault()
                }
            });
            y = r.closeelement ? r.closeelement: "." + i.id + w;
            n(document).on("click", y,
            function(n) {
                t.hide(i);
                n.preventDefault()
            });
            r.detach ? $el.hide().detach() : u.hide()
        },
        show: function(r, v) {
            var b = n(r),
            k;
            if (!b.data("popup-visible")) {
                b.data("popup-initialized") || t._init(r);
                b.attr("data-popup-initialized", "true");
                var g = n("body"),
                w = b.data("popupoptions"),
                d = n("#" + r.id + "_wrapper"),
                it = n("#" + r.id + "_background");
                if (u(r, v, w.beforeopen), f[r.id] = v, w.detach ? (d.prepend(r), b.show()) : d.show(), setTimeout(function() {
                    d.css({
                        visibility: "visible",
                        opacity: 1
                    });
                    n("html").addClass("popup_visible").addClass("popup_visible_" + r.id);
                    b.addClass("popup_content_visible")
                },
                20), b.css({
                    visibility: "visible",
                    opacity: 1
                }), w.scrolllock && (g.css("overflow", "hidden"), g.height() > p.height() && g.css("margin-right", a + o)), setTimeout(function() {
                    e || (w.keepfocus && n(document).on("focusin", h), w.blur && n(document).on("click", c), w.escape && n(document).on("keydown", l));
                    e ? s = !0 : e = !0
                },
                0), b.data("popup-visible", !0), t.reposition(r, v), w.background && (it.css({
                    visibility: "visible",
                    opacity: w.opacity
                }), setTimeout(function() {
                    it.css({
                        opacity: w.opacity
                    })
                },
                0)), y = document.activeElement, w.keepfocus && (b.attr("tabindex", -1), setTimeout(function() {
                    w.focuselement ? n(w.focuselement).focus() : b.focus()
                },
                w.focusdelay), h = function(n) {
                    var t = document.getElementById(r.id);
                    t.contains(n.target) || (n.stopPropagation(), t.focus())
                }), w.autozindex) {
                    for (var rt = document.getElementsByTagName("*"), ut = rt.length, nt = 0, tt = 0; ut > tt; tt++) k = n(rt[tt]).css("z-index"),
                    "auto" !== k && (k = parseInt(k), k > nt && (nt = k));
                    i[r.id] = nt;
                    i[r.id] > 0 && d.css({
                        zIndex: i[r.id] + 2
                    });
                    w.background && i[r.id] > 0 && n("#" + r.id + "_background").css({
                        zIndex: i[r.id] + 1
                    })
                }
                w.blur && (c = function(i) {
                    n(i.target).parents().andSelf().is("#" + r.id) || t.hide(r)
                });
                w.escape && (l = function(n) {
                    27 == n.keyCode && b.data("popup-visible") && t.hide(r)
                });
                n(w.pagecontainer).attr("aria-hidden", !0);
                b.attr("aria-hidden", !1);
                d.one("transitionend",
                function() {
                    u(r, v, w.opentransitionend)
                });
                u(r, v, w.onopen)
            }
        },
        hide: function(t) {
            var v = n("body"),
            r = n(t),
            i = r.data("popupoptions"),
            o = n("#" + t.id + "_wrapper"),
            p = n("#" + t.id + "_background");
            r.data("popup-visible", !1);
            s ? (n("html").removeClass("popup_visible_" + t.id), s = !1) : (n("html").removeClass("popup_visible").removeClass("popup_visible_" + t.id), e = !1);
            r.removeClass("popup_content_visible");
            i.scrolllock && setTimeout(function() {
                v.css({
                    overflow: "visible",
                    "margin-right": a
                })
            },
            10);
            i.blur && n(document).off("click", c);
            i.keepfocus && (n(document).off("focusin", h), setTimeout(function() {
                n(y).is(":visible") && y.focus()
            },
            0));
            i.escape && n(document).off("keydown", l);
            o.css({
                visibility: "hidden",
                opacity: 0
            });
            r.css({
                visibility: "hidden",
                opacity: 0
            });
            i.background && p.css({
                visibility: "hidden",
                opacity: 0
            });
            r.one("transitionend",
            function() {
                r.data("popup-visible") || (i.detach ? r.hide().detach() : o.hide());
                i.notransitiondetach || u(t, f[t.id], i.closetransitionend)
            });
            i.notransitiondetach && (i.detach ? r.hide().detach() : o.hide());
            n(i.pagecontainer).attr("aria-hidden", !1);
            r.attr("aria-hidden", !0);
            u(t, f[t.id], i.onclose)
        },
        toggle: function(n, i) {
            $el.data("popup-visible") ? t.hide(n) : setTimeout(function() {
                t.show(n, i)
            },
            0)
        },
        reposition: function(t, i) {
            var e = n(t),
            r = e.data("popupoptions"),
            u = n("#" + t.id + "_wrapper");
            if (n("#" + t.id + "_background"), i = i || 0, "tooltip" == r.type) {
                u.css({
                    position: "absolute"
                });
                var s = r.openelement ? r.openelement: "." + t.id + v,
                o = n(s + '[data-popup-ordinal="' + i + '"]'),
                f = o.offset();
                "right" == r.horizontal ? u.css("left", f.left + o.outerWidth() + r.offsetleft) : "leftedge" == r.horizontal ? u.css("left", f.left + o.outerWidth() - o.outerWidth() + r.offsetleft) : "left" == r.horizontal ? u.css("right", n(window).width() - f.left - r.offsetleft) : "rightedge" == r.horizontal ? u.css("right", n(window).width() - f.left - o.outerWidth() - r.offsetleft) : u.css("left", f.left + o.outerWidth() / 2 - e.outerWidth() / 2 - parseFloat(e.css("marginLeft")) + r.offsetleft);
                "bottom" == r.vertical ? u.css("top", f.top + o.outerHeight() + r.offsettop) : "bottomedge" == r.vertical ? u.css("top", f.top + o.outerHeight() - e.outerHeight() + r.offsettop) : "top" == r.vertical ? u.css("bottom", n(window).height() - f.top - r.offsettop) : "topedge" == r.vertical ? u.css("bottom", n(window).height() - f.top - e.outerHeight() - r.offsettop) : u.css("top", f.top + o.outerHeight() / 2 - e.outerHeight() / 2 - parseFloat(e.css("marginTop")) + r.offsettop)
            } else "overlay" == r.type && (r.horizontal ? u.css("text-align", r.horizontal) : u.css("text-align", "center"), r.vertical ? e.css("vertical-align", r.vertical) : e.css("vertical-align", "middle"))
        }
    },
    u = function(t, i, u) {
        var f = r.openelement ? r.openelement: "." + t.id + v,
        e = n(f + '[data-popup-ordinal="' + i + '"]');
        "function" == typeof u && u(e)
    };
    n.fn.popup = function(i) {
        return this.each(function() {
            if ($el = n(this), "object" == typeof i) {
                var u = n.extend({},
                n.fn.popup.defaults, i);
                $el.data("popupoptions", u);
                r = $el.data("popupoptions");
                t._init(this)
            } else "string" == typeof i ? ($el.data("popupoptions") || ($el.data("popupoptions", n.fn.popup.defaults), r = $el.data("popupoptions")), t[i].call(this, this)) : ($el.data("popupoptions") || ($el.data("popupoptions", n.fn.popup.defaults), r = $el.data("popupoptions")), t._init(this))
        })
    };
    n.fn.popup.defaults = {
        type: "overlay",
        autoopen: !1,
        background: !0,
        color: "black",
        opacity: "0.5",
        horizontal: "center",
        vertical: "middle",
        offsettop: 0,
        offsetleft: 0,
        escape: !0,
        blur: !0,
        setzindex: !0,
        autozindex: !1,
        scrolllock: !1,
        keepfocus: !0,
        focuselement: null,
        focusdelay: 50,
        outline: !1,
        pagecontainer: null,
        detach: !1,
        openelement: null,
        closeelement: null,
        transition: null,
        notransitiondetach: !1,
        beforeopen: function() {},
        onclose: function() {},
        onopen: function() {},
        opentransitionend: function() {},
        closetransitionend: function() {}
    }
} (jQuery),
function(n) {
    var t, i = n();
    n.fn.sortable = function(r) {
        var u = String(r);
        return r = n.extend({
            connectWith: !1
        },
        r),
        this.each(function() {
            var o, s, f, e;
            if (/^enable|disable|destroy$/.test(u)) {
                f = n(this).children(n(this).data("items")).attr("draggable", u == "enable");
                u == "destroy" && f.add(this).removeData("connectWith items").off("dragstart.h5s dragend.h5s selectstart.h5s dragover.h5s dragenter.h5s drop.h5s");
                return
            }
            f = n(this).children(r.items);
            e = n("<" + (/^ul|ol$/i.test(this.tagName) ? "li": "div") + ' class="sortable-placeholder">');
            f.find(r.handle).mousedown(function() {
                o = !0
            }).mouseup(function() {
                o = !1
            });
            n(this).data("items", r.items);
            i = i.add(e);
            r.connectWith && n(r.connectWith).add(this).data("connectWith", r.connectWith);
            f.attr("draggable", "true").on("dragstart.h5s",
            function(i) {
                if (r.handle && !o) return ! 1;
                o = !1;
                var u = i.originalEvent.dataTransfer;
                u.effectAllowed = "move";
                u.setData("Text", "dummy");
                s = (t = n(this)).addClass("sortable-dragging").index()
            }).on("dragend.h5s",
            function() {
                t && (t.removeClass("sortable-dragging").show(), i.detach(), s != t.index() && t.parent().trigger("sortupdate", {
                    item: t
                }), t = null)
            }).not("a[href], img").on("selectstart.h5s",
            function() {
                return this.dragDrop && this.dragDrop(),
                !1
            }).end().add([this, e]).on("dragover.h5s dragenter.h5s drop.h5s",
            function(u) {
                return ! f.is(t) && r.connectWith !== n(t).parent().data("connectWith") ? !0 : u.type == "drop" ? (u.stopPropagation(), i.filter(":visible").after(t), t.trigger("dragend.h5s"), !1) : (u.preventDefault(), u.originalEvent.dataTransfer.dropEffect = "move", f.is(this) ? (r.forcePlaceholderSize && e.height(t.outerHeight()), t.hide(), n(this)[e.index() < n(this).index() ? "after": "before"](e), i.not(e).detach()) : i.is(this) || n(this).children(r.items).length || (i.detach(), n(this).append(e)), !1)
            })
        })
    }
} (jQuery);
window.Modernizr = function(n, t, i) {
    function v(n) {
        b.cssText = n
    }
    function e(n, t) {
        return typeof n === t
    }
    var r = {},
    u = t.documentElement,
    f = "modernizr",
    y = t.createElement(f),
    b = y.style,
    k,
    g = {}.toString,
    h = {},
    p = [],
    c = p.slice,
    o,
    w = function(n, i, r, e) {
        var l, a, c, v, o = t.createElement("div"),
        h = t.body,
        s = h || t.createElement("body");
        if (parseInt(r, 10)) while (r--) c = t.createElement("div"),
        c.id = e ? e[r] : f + (r + 1),
        o.appendChild(c);
        return l = ["&#173;", '<style id="s', f, '">', n, "<\/style>"].join(""),
        o.id = f,
        (h ? o: s).innerHTML += l,
        s.appendChild(o),
        h || (s.style.background = "", s.style.overflow = "hidden", v = u.style.overflow, u.style.overflow = "hidden", u.appendChild(s)),
        a = i(o, n),
        h ? o.parentNode.removeChild(o) : (s.parentNode.removeChild(s), u.style.overflow = v),
        !!a
    },
    d = function(t) {
        var i = n.matchMedia || n.msMatchMedia,
        r;
        return i ? i(t).matches: (w("@media " + t + " { #" + f + " { position: absolute; } }",
        function(t) {
            r = (n.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).position == "absolute"
        }), r)
    },
    l = {}.hasOwnProperty,
    a,
    s;
    a = !e(l, "undefined") && !e(l.call, "undefined") ?
    function(n, t) {
        return l.call(n, t)
    }: function(n, t) {
        return t in n && e(n.constructor.prototype[t], "undefined")
    };
    Function.prototype.bind || (Function.prototype.bind = function(n) {
        var t = this,
        i, r;
        if (typeof t != "function") throw new TypeError;
        return i = c.call(arguments, 1),
        r = function() {
            var f, e, u;
            return this instanceof r ? (f = function() {},
            f.prototype = t.prototype, e = new f, u = t.apply(e, i.concat(c.call(arguments))), Object(u) === u ? u: e) : t.apply(n, i.concat(c.call(arguments)))
        },
        r
    });
    for (s in h) a(h, s) && (o = s.toLowerCase(), r[o] = h[s](), p.push((r[o] ? "": "no-") + o));
    return r.addTest = function(n, t) {
        if (typeof n == "object") for (var f in n) a(n, f) && r.addTest(f, n[f]);
        else {
            if (n = n.toLowerCase(), r[n] !== i) return r;
            t = typeof t == "function" ? t() : t;
            typeof enableClasses != "undefined" && enableClasses && (u.className += " " + (t ? "": "no-") + n);
            r[n] = t
        }
        return r
    },
    v(""),
    y = k = null,
    r._version = "2.7.1",
    r.mq = d,
    r.testStyles = w,
    r
} (this, this.document);
$(function() {
    $(".scrollable-sidebar").slimScroll({
        height: "100%",
        size: "0px"
    });
    $(".sidebar-menu .openable > a").click(function() {
        return (!$("aside").hasClass("sidebar-mini") || Modernizr.mq("(max-width: 991px)")) && ($(this).parent().children(".submenu").is(":hidden") ? ($(this).parent().siblings().removeClass("open").children(".submenu").slideUp(200), $(this).parent().addClass("open").children(".submenu").slideDown(200)) : $(this).parent().removeClass("open").children(".submenu").slideUp(200)),
        !1
    }); (!$(".sidebar-menu").hasClass("sidebar-mini") || Modernizr.mq("(max-width: 767px)")) && $(".openable.open").children(".submenu").slideDown(200);
    $("#btn-collapse").click(function() {
        $(".sidebar-header").toggleClass("active")
    });
    $("#theme-setting-icon").click(function() {
        return $("#theme-setting").hasClass("open") ? ($("#theme-setting").removeClass("open"), $("#theme-setting-icon").removeClass("open")) : ($("#theme-setting").addClass("open"), $("#theme-setting-icon").addClass("open")),
        !1
    });
    $("#sidebarToggleLG").click(function() {
        $(".wrapper").hasClass("display-right") ? ($(".wrapper").removeClass("display-right"), $(".sidebar-right").removeClass("active")) : ($(".top-nav").toggleClass("sidebar-mini"), $("aside").toggleClass("sidebar-mini"), $("footer").toggleClass("sidebar-mini"), $(".main-container").toggleClass("sidebar-mini"), $(".main-menu").find(".openable").removeClass("open"), $(".main-menu").find(".submenu").removeAttr("style"))
    });

    $("#sidebarToggleSM").click(function() {
        $("aside").toggleClass("active");
        $(".wrapper").toggleClass("display-left");
        $(".footer").toggleClass("sidebar-mini")
    });
    $(".sidebarRight-toggle").click(function() {
        return $(".sidebar-right").toggleClass("active"),
        $(".wrapper").toggleClass("display-right"),
        $("footer").toggleClass("display-right"),
        !1
    });
    $(".dropdown-menu input").click(function(n) {
        n.stopPropagation()
    });
    $(".task-finish").click(function() {
        $(this).is(":checked") ? $(this).parent().parent().addClass("selected") : $(this).parent().parent().removeClass("selected")
    });
    $(".task-del").click(function() {
        var n = $(this).parent().parent();
        return n.addClass("removed"),
        setTimeout(function() {
            n.remove()
        },
        1e3),
        !1
    });
    var n = "";
    $(".widget-refresh-option").click(function() {
        n = $(this).parent().parent().parent();
        var t = n.find(".refresh-icon-animated").fadeIn();
        return setTimeout(function() {
            t.fadeOut()
        },
        2e3),
        !1
    });
    $(".widget-collapse-option").click(function() {
        n = $(this).parent().parent().parent();
        n.find(".smart-widget-inner").slideToggle();
        n.toggleClass("smart-widget-collapsed");
        var t = n.find(".refresh-icon-animated").fadeIn();
        return setTimeout(function() {
            t.fadeOut()
        },
        500),
        n = "",
        !1
    });
    $(".widget-toggle-hidden-option").click(function() {
        n = $(this).parent().parent().parent();
        n.find(".smart-widget-hidden-section").slideToggle();
        var t = n.find(".refresh-icon-animated").fadeIn();
        return setTimeout(function() {
            t.fadeOut()
        },
        500),
        n = "",
        !1
    });
    $(".widget-color-list li").click(function() {
        return n = $(this).parent().parent().parent().parent(),
        $selectedColor = $(this).data("color"),
        n.removeClass("widget-light-grey"),
        n.removeClass("widget-dark"),
        n.removeClass("widget-dark-blue"),
        n.removeClass("widget-blue"),
        n.removeClass("widget-green"),
        n.removeClass("widget-yellow"),
        n.removeClass("widget-orange"),
        n.removeClass("widget-red"),
        n.removeClass("widget-purple"),
        $selectedColor != "reset" && n.addClass($selectedColor),
        !1
    });
    $(".widget-remove-option").click(function() {
        return n = $(this).parent().parent().parent(),
        $("#deleteWidgetConfirm").popup("show"),
        !1
    });
    $(".remove-widget-btn").click(function() {
        return $("#deleteWidgetConfirm").popup("hide"),
        n.fadeOut(),
        n = "",
        !1
    });
    $(".scroll-to-top").click(function() {
        return $("html, body").animate({
            scrollTop: 0
        },
        600),
        !1
    });
    $("[data-toggle=popover]").popover();
    $("[data-toggle=tooltip]").tooltip();
    $("[rel=tooltip]").tooltip()
});
$(window).load(function() {
    $("body").removeClass("overflow-hidden");
    $(".wrapper").removeClass("preload");
    setTimeout(function() {
        $(".chat-notification").find(".badge").addClass("active");
        $(".chat-alert").addClass("active")
    },
    3e3);
    setTimeout(function() {
        $(".chat-alert").removeClass("active")
    },
    8e3)
});
$(window).scroll(function() {
    var n = $(window).scrollTop();
    n >= 200 ? $(".scroll-to-top").addClass("active") : $(".scroll-to-top").removeClass("active")
});
jQuery.MyCommon = {
    PageLoading: function(n) {
        function r() {
            if (document.readyState == "complete") {
                var t = $("#loadingPage");
                setTimeout(function() {
                    t.animate({
                        opacity: 0
                    },
                    n.delayTime,
                    function() {
                        $(this).hide()
                    })
                },
                n.sleep)
            }
        }
        var n = $.extend({
            opacity: 1,
            backgroundColor: "#fff",
            borderColor: "#bbb",
            borderWidth: 1,
            borderStyle: "solid",
            loadingTips: "Loading, please wait...",
            TipsColor: "#666",
            delayTime: 1e3,
            zindex: 9999999,
            sleep: 0
        },
        n),
        t = document.documentElement.clientHeight,
        u = document.documentElement.clientWidth,
        i = '<div id="loadingPage" style="position:fixed;left:0;top:0;_position: absolute;width:100%;height:' + t + "px;background:" + n.backgroundColor + ";opacity:" + n.opacity + ";filter:alpha(opacity=" + n.opacity * 100 + ");z-index:" + n.zindex + ';"><div class="spinner"><div class="bounce1"><\/div><div class="bounce2"><\/div><div class="bounce3"><\/div><\/div><\/div>';
        $("body").append(i);
        document.onreadystatechange = r
    }
};
$(function() {
    // $.MyCommon.PageLoading({
    //     sleep: 0
    // });
    // LanguageUrl();
    $("#checkall").click(function() {
        var n = this.checked;
        $("input:checkbox[name='ids']").each(function() {
            $(this).attr("disabled") || (this.checked = n)
        })
    });
    $("#delete").click(function() {
        if ($("input:checkbox[name='ids']:checked").length <= 0) {
            AutoTopTips(0, "请选择您要操作的数据！");
            return
        }
        confirm("您确定要删除勾选的记录吗?") && $("#mainForm").submit()
    });
    $("#delete6").click(function() {
        confirm("您确定要执行操作吗?") && ($("#delete_more").val("6"), $("#mainForm").submit())
    });
    var n = $("#edit_more .dropdown-menu").attr("data_post_url");
    $("#edit_more .dropdown-menu a").click(function() {
        var t, i, r;
        if ($("input:checkbox[name='ids']:checked").length <= 0) {
            AutoTopTips(0, "请选择您要操作的数据！");
            return
        }
        if (t = [], $("input:checkbox[name='ids']:checked").each(function() {
            t.push($(this).val())
        }), i = $(this).attr("data-type"), r = $(this).attr("data-val"), t.length <= 0 || i == "" || r == "") {
            AutoTopTips(0, "请选择您要操作的数据！");
            return
        }
        $.ajax({
            type: "POST",
            url: n,
            data: "id=0&ids=" + t.join(",") + "&type=" + i + "&val=" + r,
            success: function(n) {
                var t = jQuery.parseJSON(n);
                t.status == "200" ? (AutoTopTips(1, t.message), setTimeout(function() {
                    location.href = window.location.href
                },
                2e3)) : AutoTopTips(0, t.message)
            }
        })
    });
    $("#saveorder").click(function(t) {
        t.preventDefault();
        n = $(this).attr("data_post_url");
        var i = "";
        $(".input_sortno").each(function() {
            var n = $(this).attr("data_val"),
            t = this.value;
            isNum(n) && isNum(t) && (i != "" && (i += ","), i += encodeURIComponent(n + "@" + t))
        });
        i == "" && (location.href = window.location.href);
        i = "id=0&issortno=true&listsortno=" + i;
        $.ajax({
            type: "POST",
            url: n,
            data: i,
            success: function(n) {
                var t = jQuery.parseJSON(n);
                t.status == "200" ? (AutoTopTips(1, t.message), setTimeout(function() {
                    location.href = window.location.href
                },
                2e3)) : AutoTopTips(0, t.message)
            }
        })
    });
    $(".list_deleteid").click(function() {
        if (!confirm("您确定要删除此记录吗?")) return ! 1
    });
    $(".list_sendwx").click(function() {
        if (!confirm("确定使用微信群发接口发送吗?会员每月只能接收4条群发信息，是否立即发送?")) return ! 1
    });
    $(".list_sendkf").click(function() {
        if (!confirm("使用该接口没有接收次数限制，且点击图文信息能直接进行链接跳转，但是只有在48小时内与公众号有过交互的会员才能接收到信息，是否立即发送?")) return ! 1
    });
    $(".list_sumbitmaterial").click(function() {
        if (!confirm("是否立即上传素材到微信?")) return ! 1
    });
    $(".xh4 .c4").length > 0 && $(".xh4 .c4").click(function() {
        $(window).width() < 1400 && ($(".xh4 .c4").hasClass("g") ? ($(".nav-info").hide(), $(".xh4 .c4").removeClass("g")) : ($(".nav-info").show(), $(".xh4 .c4").addClass("g")))
    });
    $(".nav-info .ddx").length > 0 && $(".nav-info .ddx").click(function() {
        $(".nav-info .ddx .b3").hasClass("g") ? ($(".nav-info .dp").slideDown(), $(".nav-info .ddx .b3").removeClass("g")) : ($(".nav-info .dp").slideUp(), $(".nav-info .ddx .b3").addClass("g"))
    })
});
var AutoCloseTips; !
function(n, t) {
    "use strict";
    var s, r, e, f = {
        getPath: function() {
            var n = document.scripts,
            t = n[n.length - 1],
            i = t.src;
            if (!t.getAttribute("merge")) return i.substring(0, i.lastIndexOf("/") + 1)
        } (),
        enter: function(n) {
            13 === n.keyCode && n.preventDefault()
        },
        config: {},
        end: {},
        btn: ["&#x786E;&#x5B9A;", "&#x53D6;&#x6D88;"],
        type: ["dialog", "page", "iframe", "loading", "tips"]
    },
    u = {
        v: "2.1",
        ie6: !!n.ActiveXObject && !n.XMLHttpRequest,
        index: 0,
        path: f.getPath,
        config: function(n, t) {
            var i = 0;
            return n = n || {},
            u.cache = f.config = r.extend(f.config, n),
            u.path = f.config.path || u.path,
            "string" == typeof n.extend && (n.extend = [n.extend]),
            u.use("skin/layer.css", n.extend && n.extend.length > 0 ?
            function e() {
                var r = n.extend;
                u.use(r[r[i] ? i: i - 1], i < r.length ?
                function() {
                    return++i,
                    e
                } () : t)
            } () : t),
            this
        },
        use: function(n, t, i) {
            var s = r("head")[0],
            n = n.replace(/\s/g, ""),
            f = /\.css$/.test(n),
            e = document.createElement(f ? "link": "script"),
            o = "layui_layer_" + n.replace(/\.|\//g, "");
            if (u.path) return (f && (e.rel = "stylesheet"), e[f ? "href": "src"] = /^http:\/\//.test(n) ? n: u.path + n, e.id = o, r("#" + o)[0] || s.appendChild(e),
            function h() { (f ? 1989 === parseInt(r("#" + o).css("width")) : u[i || o]) ?
                function() {
                    t && t();
                    try {
                        f || s.removeChild(e)
                    } catch(n) {}
                } () : setTimeout(h, 100)
            } (), this)
        },
        ready: function(n, t) {
            var i = "function" == typeof n;
            return i && (t = n),
            u.config(r.extend(f.config,
            function() {
                return i ? {}: {
                    path: n
                }
            } ()), t),
            this
        },
        alert: function(n, t, i) {
            var f = "function" == typeof t;
            return f && (i = t),
            u.open(r.extend({
                content: n,
                yes: i
            },
            f ? {}: t))
        },
        confirm: function(n, t, i, e) {
            var o = "function" == typeof t;
            return o && (e = i, i = t),
            u.open(r.extend({
                content: n,
                btn: f.btn,
                yes: i,
                cancel: e
            },
            o ? {}: t))
        },
        msg: function(n, e, o) {
            loadingcss3_close();
            var c = "function" == typeof e,
            s = f.config.skin,
            h = (s ? s + " " + s + "-msg": "") || "layui-layer-msg",
            l = i.anim.length - 1;
            return c && (o = e),
            u.open(r.extend({
                content: n,
                time: 2e3,
                shade: [.2, "#000"],
                skin: h,
                title: !1,
                closeBtn: !1,
                btn: !1,
                end: o
            },
            c && !f.config.skin ? {
                skin: h + " layui-layer-hui"
            }: function() {
                return e = e || {},
                ( - 1 === e.icon || e.icon === t && !f.config.skin) && (e.skin = h + " " + (e.skin || "layui-layer-hui")),
                e
            } ()))
        },
        load: function() {
            return s = loadingcss3_open()
        },
        tips: function(n, t, i) {
            return u.open(r.extend({
                type: 4,
                content: [n, t],
                closeBtn: !1,
                time: 3e3,
                maxWidth: 210
            },
            i))
        }
    },
    o = function(n) {
        var t = this;
        t.index = ++u.index;
        t.config = r.extend({},
        t.config, f.config, n);
        t.creat()
    },
    i;
    o.pt = o.prototype;
    i = ["layui-layer", ".layui-layer-title", ".layui-layer-main", ".layui-layer-dialog", "layui-layer-iframe", "layui-layer-content", "layui-layer-btn", "layui-layer-close"];
    i.anim = ["layui-anim", "layui-anim-01", "layui-anim-02", "layui-anim-03", "layui-anim-04", "layui-anim-05", "layui-anim-06"];
    o.pt.config = {
        type: 0,
        shade: .3,
        fix: !0,
        move: i[1],
        title: "&#x4FE1;&#x606F;",
        offset: "auto",
        area: "auto",
        closeBtn: 1,
        time: 0,
        zIndex: 19891014,
        maxWidth: 360,
        shift: 0,
        icon: -1,
        scrollbar: !0,
        tips: 2
    };
    o.pt.vessel = function(n, t) {
        var e = this,
        u = e.index,
        r = e.config,
        o = r.zIndex + u,
        s = "object" == typeof r.title,
        c = r.maxmin && (1 === r.type || 2 === r.type),
        h = r.title ? '<div class="layui-layer-title" style="' + (s ? r.title[1] : "") + '">' + (s ? r.title[0] : r.title) + "<\/div>": "";
        return r.zIndex = o,
        t([r.shade ? '<div class="layui-layer-shade" id="layui-layer-shade' + u + '" times="' + u + '" style="' + ("z-index:" + (o - 1) + "; background-color:" + (r.shade[1] || "#000") + "; opacity:" + (r.shade[0] || r.shade) + "; filter:alpha(opacity=" + (100 * r.shade[0] || 100 * r.shade) + ");") + '"><\/div>': "", '<div class="' + i[0] + " " + (i.anim[r.shift] || "") + (" layui-layer-" + f.type[r.type]) + (0 != r.type && 2 != r.type || r.shade ? "": " layui-layer-border") + " " + (r.skin || "") + '" id="' + i[0] + u + '" type="' + f.type[r.type] + '" times="' + u + '" showtime="' + r.time + '" conType="' + (n ? "object": "string") + '" style="z-index: ' + o + "; width:" + r.area[0] + ";height:" + r.area[1] + (r.fix ? "": ";position:absolute;") + '">' + (n && 2 != r.type ? "": h) + '<div class="layui-layer-content' + (0 == r.type && -1 !== r.icon ? " layui-layer-padding": "") + (3 == r.type ? " layui-layer-loading" + r.icon: "") + '">' + (0 == r.type && -1 !== r.icon ? '<i class="layui-layer-ico layui-layer-ico' + r.icon + '"><\/i>': "") + (1 == r.type && n ? "": r.content || "") + '<\/div><span class="layui-layer-setwin">' +
        function() {
            var n = c ? '<a class="layui-layer-min" href="javascript:;"><cite><\/cite><\/a><a class="layui-layer-ico layui-layer-max" href="javascript:;"><\/a>': "";
            return r.closeBtn && (n += '<a class="layui-layer-ico ' + i[7] + " " + i[7] + (r.title ? r.closeBtn: 4 == r.type ? "1": "2") + '" href="javascript:;"><\/a>'),
            n
        } () + "<\/span>" + (r.btn ?
        function() {
            var t = "",
            n, u;
            for ("string" == typeof r.btn && (r.btn = [r.btn]), n = 0, u = r.btn.length; u > n; n++) t += '<a class="' + i[6] + n + '">' + r.btn[n] + "<\/a>";
            return '<div class="' + i[6] + '">' + t + "<\/div>"
        } () : "") + "<\/div>"], h),
        e
    };
    o.pt.creat = function() {
        var t = this,
        n = t.config,
        o = t.index,
        s = n.content,
        h = "object" == typeof s;
        switch ("string" == typeof n.area && (n.area = "auto" === n.area ? ["", ""] : [n.area, ""]), n.type) {
        case 0:
            n.btn = "btn" in n ? n.btn: f.btn[0];
            u.closeAll("dialog");
            break;
        case 2:
            s = n.content = h ? n.content: [n.content || "http://layer.layui.com", "auto"];
            n.content = '<iframe scrolling="' + (n.content[1] || "auto") + '" allowtransparency="true" id="' + i[4] + o + '" name="' + i[4] + o + '" onload="this.className=\'\';" class="layui-layer-load" frameborder="0" src="' + n.content[0] + '"><\/iframe>';
            break;
        case 3:
            n.title = !1;
            n.closeBtn = !1; - 1 === n.icon && 0 === n.icon;
            u.closeAll("loading");
            break;
        case 4:
            h || (n.content = [n.content, "body"]);
            n.follow = n.content[1];
            n.content = n.content[0] + '<i class="layui-layer-TipsG"><\/i>';
            n.title = !1;
            n.shade = !1;
            n.fix = !1;
            n.tips = "object" == typeof n.tips ? n.tips: [n.tips, !0];
            n.tipsMore || u.closeAll("tips")
        }
        t.vessel(h,
        function(u, f) {
            r("body").append(u[0]);
            h ?
            function() {
                2 == n.type || 4 == n.type ?
                function() {
                    r("body").append(u[1])
                } () : function() {
                    s.parents("." + i[0])[0] || (s.show().addClass("layui-layer-wrap").wrap(u[1]), r("#" + i[0] + o).find("." + i[5]).before(f))
                } ()
            } () : r("body").append(u[1]);
            t.layero = r("#" + i[0] + o);
            n.scrollbar || i.html.css("overflow", "hidden").attr("layer-full", o)
        }).auto(o);
        2 == n.type && u.ie6 && t.layero.find("iframe").attr("src", s[0]);
        r(document).off("keydown", f.enter).on("keydown", f.enter);
        t.layero.on("keydown",
        function() {
            r(document).off("keydown", f.enter)
        });
        4 == n.type ? t.tips() : t.offset();
        n.fix && e.on("resize",
        function() {
            t.offset(); (/^\d+%$/.test(n.area[0]) || /^\d+%$/.test(n.area[1])) && t.auto(o);
            4 == n.type && t.tips()
        });
        n.time <= 0 || setTimeout(function() {
            u.close(t.index)
        },
        n.time);
        t.move().callback()
    };
    o.pt.auto = function(n) {
        function f(n) {
            n = t.find(n);
            n.height(o[1] - h - c - 2 * (0 | parseFloat(n.css("padding"))))
        }
        var s = this,
        u = s.config,
        t = r("#" + i[0] + n);
        "" === u.area[0] && u.maxWidth > 0 && (/MSIE 7/.test(navigator.userAgent) && u.btn && t.width(t.innerWidth()), t.outerWidth() > u.maxWidth && t.width(u.maxWidth));
        var o = [t.innerWidth(), t.innerHeight()],
        h = t.find(i[1]).outerHeight() || 0,
        c = t.find("." + i[6]).outerHeight() || 0;
        switch (u.type) {
        case 2:
            f("iframe");
            break;
        default:
            "" === u.area[1] ? u.fix && o[1] >= e.height() && (o[1] = e.height(), f("." + i[5])) : f("." + i[5])
        }
        return s
    };
    o.pt.offset = function() {
        this.layero.css({
            left: 0
        });
        var n = this,
        t = n.config,
        r = n.layero,
        i = [r.outerWidth(), r.outerHeight()],
        u = "object" == typeof t.offset;
        n.offsetTop = (e.height() - i[1]) / 2;
        n.offsetLeft = (e.width() - i[0]) / 2;
        u ? (n.offsetTop = t.offset[0], n.offsetLeft = t.offset[1] || n.offsetLeft) : "auto" !== t.offset && (n.offsetTop = t.offset, "rb" === t.offset && (n.offsetTop = e.height() - i[1], n.offsetLeft = e.width() - i[0]));
        t.fix || (n.offsetTop = /%$/.test(n.offsetTop) ? e.height() * parseFloat(n.offsetTop) / 100 : parseFloat(n.offsetTop), n.offsetLeft = /%$/.test(n.offsetLeft) ? e.width() * parseFloat(n.offsetLeft) / 100 : parseFloat(n.offsetLeft), n.offsetTop += e.scrollTop(), n.offsetLeft += e.scrollLeft());
        r.css({
            top: n.offsetTop,
            left: n.offsetLeft
        })
    };
    o.pt.tips = function() {
        var c = this,
        t = c.config,
        s = c.layero,
        u = [s.outerWidth(), s.outerHeight()],
        f = r(t.follow);
        f[0] || (f = r("body"));
        var n = {
            width: f.outerWidth(),
            height: f.outerHeight(),
            top: f.offset().top,
            left: f.offset().left
        },
        o = s.find(".layui-layer-TipsG"),
        h = t.tips[0];
        t.tips[1] || o.remove();
        n.autoLeft = function() {
            n.left + u[0] - e.width() > 0 ? (n.tipLeft = n.left + n.width - u[0], o.css({
                right: 12,
                left: "auto"
            })) : n.tipLeft = n.left
        };
        n.where = [function() {
            n.autoLeft();
            n.tipTop = n.top - u[1] - 10;
            o.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color", t.tips[1])
        },
        function() {
            n.tipLeft = n.left + n.width + 10;
            n.tipTop = n.top;
            o.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color", t.tips[1])
        },
        function() {
            n.autoLeft();
            n.tipTop = n.top + n.height + 10;
            o.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color", t.tips[1])
        },
        function() {
            n.tipLeft = n.left - u[0] - 10;
            n.tipTop = n.top;
            o.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color", t.tips[1])
        }];
        n.where[h - 1]();
        1 === h ? n.top - (e.scrollTop() + u[1] + 16) < 0 && n.where[2]() : 2 === h ? e.width() - (n.left + n.width + u[0] + 16) > 0 || n.where[3]() : 3 === h ? n.top - e.scrollTop() + n.height + u[1] + 16 - e.height() > 0 && n.where[0]() : 4 === h && u[0] + 16 - n.left > 0 && n.where[1]();
        s.find("." + i[5]).css({
            "background-color": t.tips[1],
            "padding-right": t.closeBtn ? "30px": ""
        });
        s.css({
            left: n.tipLeft,
            top: n.tipTop
        })
    };
    o.pt.move = function() {
        var u = this,
        t = u.config,
        n = {
            setY: 0,
            moveLayer: function() {
                var t = n.layero,
                r = parseInt(t.css("margin-left")),
                i = parseInt(n.move.css("left"));
                0 === r || (i -= r);
                "fixed" !== t.css("position") && (i -= t.parent().offset().left, n.setY = 0);
                t.css({
                    left: i,
                    top: parseInt(n.move.css("top")) - n.setY
                })
            }
        },
        f = u.layero.find(t.move);
        return t.move && f.attr("move", "ok"),
        f.css({
            cursor: t.move ? "move": "auto"
        }),
        r(t.move).on("mousedown",
        function(u) {
            if (u.preventDefault(), "ok" === r(this).attr("move")) {
                n.ismove = !0;
                n.layero = r(this).parents("." + i[0]);
                var f = n.layero.offset().left,
                o = n.layero.offset().top,
                s = n.layero.outerWidth() - 6,
                h = n.layero.outerHeight() - 6;
                r("#layui-layer-moves")[0] || r("body").append('<div id="layui-layer-moves" class="layui-layer-moves" style="left:' + f + "px; top:" + o + "px; width:" + s + "px; height:" + h + 'px; z-index:2147483584"><\/div>');
                n.move = r("#layui-layer-moves");
                t.moveType && n.move.css({
                    visibility: "hidden"
                });
                n.moveX = u.pageX - n.move.position().left;
                n.moveY = u.pageY - n.move.position().top;
                "fixed" !== n.layero.css("position") || (n.setY = e.scrollTop())
            }
        }),
        r(document).mousemove(function(i) {
            var r, u, f, o;
            n.ismove && (r = i.pageX - n.moveX, u = i.pageY - n.moveY, (i.preventDefault(), t.moveOut) || (n.setY = e.scrollTop(), f = e.width() - n.move.outerWidth(), o = n.setY, 0 > r && (r = 0), r > f && (r = f), o > u && (u = o), u > e.height() - n.move.outerHeight() + n.setY && (u = e.height() - n.move.outerHeight() + n.setY)), n.move.css({
                left: r,
                top: u
            }), t.moveType && n.moveLayer(), r = u = f = o = null)
        }).mouseup(function() {
            try {
                n.ismove && (n.moveLayer(), n.move.remove(), t.moveEnd && t.moveEnd());
                n.ismove = !1
            } catch(i) {
                n.ismove = !1
            }
        }),
        u
    };
    o.pt.callback = function() {
        function o() {
            var i = n.cancel && n.cancel(t.index);
            i === !1 || u.close(t.index)
        }
        var t = this,
        e = t.layero,
        n = t.config;
        t.openLayer();
        n.success && (2 == n.type ? e.find("iframe").on("load",
        function() {
            n.success(e, t.index)
        }) : n.success(e, t.index));
        u.ie6 && t.IE6(e);
        e.find("." + i[6]).children("a").on("click",
        function() {
            var i = r(this).index();
            n["btn" + (i + 1)] && n["btn" + (i + 1)](t.index, e);
            0 === i ? n.yes ? n.yes(t.index, e) : u.close(t.index) : 1 === i ? o() : n["btn" + (i + 1)] || u.close(t.index)
        });
        e.find("." + i[7]).on("click", o);
        n.shadeClose && r("#layui-layer-shade" + t.index).on("click",
        function() {
            u.close(t.index)
        });
        e.find(".layui-layer-min").on("click",
        function() {
            u.min(t.index, n);
            n.min && n.min(e)
        });
        e.find(".layui-layer-max").on("click",
        function() {
            r(this).hasClass("layui-layer-maxmin") ? (u.restore(t.index), n.restore && n.restore(e)) : (u.full(t.index, n), n.full && n.full(e))
        });
        n.end && (f.end[t.index] = n.end)
    };
    f.reselect = function() {
        r.each(r("select"),
        function() {
            var n = r(this);
            n.parents("." + i[0])[0] || 1 == n.attr("layer") && r("." + i[0]).length < 1 && n.removeAttr("layer").show();
            n = null
        })
    };
    o.pt.IE6 = function(n) {
        function t() {
            n.css({
                top: f + (u.config.fix ? e.scrollTop() : 0)
            })
        }
        var u = this,
        f = n.offset().top;
        t();
        e.scroll(t);
        r("select").each(function() {
            var n = r(this);
            n.parents("." + i[0])[0] || "none" === n.css("display") || n.attr({
                layer: "1"
            }).hide();
            n = null
        })
    };
    o.pt.openLayer = function() {
        var n = this;
        u.zIndex = n.config.zIndex;
        u.setTop = function(n) {
            var t = function() {
                u.zIndex++;
                n.css("z-index", u.zIndex + 1)
            };
            return u.zIndex = parseInt(n[0].style.zIndex),
            n.on("mousedown", t),
            u.zIndex
        }
    };
    f.record = function(n) {
        var t = [n.outerWidth(), n.outerHeight(), n.position().top, n.position().left + parseFloat(n.css("margin-left"))];
        n.find(".layui-layer-max").addClass("layui-layer-maxmin");
        n.attr({
            area: t
        })
    };
    f.rescollbar = function(n) {
        i.html.attr("layer-full") == n && (i.html[0].style.removeProperty ? i.html[0].style.removeProperty("overflow") : i.html[0].style.removeAttribute("overflow"), i.html.removeAttr("layer-full"))
    };
    n.layer = u;
    u.getChildFrame = function(n, t) {
        return t = t || r("." + i[4]).attr("times"),
        r("#" + i[0] + t).find("iframe").contents().find(n)
    };
    u.getFrameIndex = function(n) {
        return r("#" + n).parents("." + i[4]).attr("times")
    };
    u.iframeAuto = function(n) {
        if (n) {
            var f = u.getChildFrame("html", n).outerHeight(),
            t = r("#" + i[0] + n),
            e = t.find(i[1]).outerHeight() || 0,
            o = t.find("." + i[6]).outerHeight() || 0;
            t.css({
                height: f + e + o
            });
            t.find("iframe").css({
                height: f
            })
        }
    };
    u.iframeSrc = function(n, t) {
        r("#" + i[0] + n).find("iframe").attr("src", t)
    };
    u.style = function(n, t) {
        var u = r("#" + i[0] + n),
        e = u.attr("type"),
        o = u.find(i[1]).outerHeight() || 0,
        s = u.find("." + i[6]).outerHeight() || 0; (e === f.type[1] || e === f.type[2]) && (u.css(t), e === f.type[2] && u.find("iframe").css({
            height: parseFloat(t.height) - o - s
        }))
    };
    u.min = function(n) {
        var t = r("#" + i[0] + n),
        e = t.find(i[1]).outerHeight() || 0;
        f.record(t);
        u.style(n, {
            width: 180,
            height: e,
            overflow: "hidden"
        });
        t.find(".layui-layer-min").hide();
        "page" === t.attr("type") && t.find(i[4]).hide();
        f.rescollbar(n)
    };
    u.restore = function(n) {
        var t = r("#" + i[0] + n),
        e = t.attr("area").split(",");
        t.attr("type");
        u.style(n, {
            width: parseFloat(e[0]),
            height: parseFloat(e[1]),
            top: parseFloat(e[2]),
            left: parseFloat(e[3]),
            overflow: "visible"
        });
        t.find(".layui-layer-max").removeClass("layui-layer-maxmin");
        t.find(".layui-layer-min").show();
        "page" === t.attr("type") && t.find(i[4]).show();
        f.rescollbar(n)
    };
    u.full = function(n) {
        var o, t = r("#" + i[0] + n);
        f.record(t);
        i.html.attr("layer-full") || i.html.css("overflow", "hidden").attr("layer-full", n);
        clearTimeout(o);
        o = setTimeout(function() {
            var i = "fixed" === t.css("position");
            u.style(n, {
                top: i ? 0 : e.scrollTop(),
                left: i ? 0 : e.scrollLeft(),
                width: e.width(),
                height: e.height()
            });
            t.find(".layui-layer-min").hide()
        },
        100)
    };
    u.title = function(n, t) {
        var f = r("#" + i[0] + (t || u.index)).find(i[1]);
        f.html(n)
    };
    u.close = function(n) {
        var t = r("#" + i[0] + n),
        s = t.attr("type"),
        o,
        e;
        if (t[0]) {
            if (s === f.type[1] && "object" === t.attr("conType")) for (t.children(":not(." + i[5] + ")").remove(), o = 0; 2 > o; o++) t.find(".layui-layer-wrap").unwrap().hide();
            else {
                if (s === f.type[2]) try {
                    e = r("#" + i[4] + n)[0];
                    e.contentWindow.document.write("");
                    e.contentWindow.close();
                    t.find("." + i[5])[0].removeChild(e)
                } catch(h) {}
                t[0].innerHTML = "";
                t.remove()
            }
            r("#layui-layer-moves, #layui-layer-shade" + n).remove();
            u.ie6 && f.reselect();
            f.rescollbar(n);
            r(document).off("keydown", f.enter);
            "function" == typeof f.end[n] && f.end[n]();
            delete f.end[n]
        }
    };
    u.closeAll = function(n) {
        r.each(r("." + i[0]),
        function() {
            var t = r(this),
            i = n ? t.attr("type") === n: 1;
            i && u.close(t.attr("times"));
            i = null
        })
    };
    f.run = function() {
        r = jQuery;
        e = r(n);
        i.html = r("html");
        u.open = function(n) {
            var t = new o(n);
            return t.index
        }
    };
    "function" == typeof define ? define(function() {
        return f.run(),
        u
    }) : function() {
        f.run();
        u
    } ()
} (window); !
function() {
    var n = layer.cache || {},
    t = function(t) {
        return n.skin ? " " + n.skin + " " + n.skin + "-" + t: ""
    };
    layer.prompt = function(n, i) {
        n = n || {};
        "function" == typeof n && (i = n);
        var r, u = 2 == n.formType ? '<textarea class="layui-layer-input">' + (n.value || "") + "<\/textarea>": function() {
            return '<input type="' + (1 == n.formType ? "password": "text") + '"  style="float:left;width:150px;" class="layui-layer-input" value="' + (n.value || "") + '">&nbsp;&nbsp;<img class="YZCode"  onclick="this.src =\'/tools/verify_code.ashx?t=\' + Math.random()" src="/tools/verify_code.ashx" alt="" style="padding-left:5px;width:76px;height:30px;cursor:pointer;" />'
        } ();
        return layer.open($.extend({
            btn: ["&#x786E;&#x5B9A;", "&#x53D6;&#x6D88;"],
            content: u,
            offset: "50px",
            skin: "layui-layer-prompt" + t("prompt"),
            success: function(n) {
                r = n.find(".layui-layer-input");
                r.focus()
            },
            yes: function(t) {
                var u = r.val();
                "" === u ? r.focus() : u.length > (n.maxlength || 500) ? layer.tips("&#x6700;&#x591A;&#x8F93;&#x5165;" + (n.maxlength || 500) + "&#x4E2A;&#x5B57;&#x6570;", r, {
                    tips: 1
                }) : i && i(u, t, r)
            }
        },
        n))
    };
    layer.tab = function(n) {
        n = n || {};
        var i = n.tab || {};
        return layer.open($.extend({
            type: 1,
            skin: "layui-layer-tab" + t("tab"),
            title: function() {
                var r = i.length,
                n = 1,
                t = "";
                if (r > 0) for (t = '<span class="layui-layer-tabnow">' + i[0].title + "<\/span>"; r > n; n++) t += "<span>" + i[n].title + "<\/span>";
                return t
            } (),
            content: '<ul class="layui-layer-tabmain">' +
            function() {
                var r = i.length,
                n = 1,
                t = "";
                if (r > 0) for (t = '<li class="layui-layer-tabli xubox_tab_layer">' + (i[0].content || "no content") + "<\/li>"; r > n; n++) t += '<li class="layui-layer-tabli">' + (i[n].content || "no  content") + "<\/li>";
                return t
            } () + "<\/ul>",
            success: function(n) {
                var t = n.find(".layui-layer-title").children(),
                i = n.find(".layui-layer-tabmain").children();
                t.on("mousedown",
                function(n) {
                    n.stopPropagation ? n.stopPropagation() : n.cancelBubble = !0;
                    var t = $(this),
                    r = t.index();
                    t.addClass("layui-layer-tabnow").siblings().removeClass("layui-layer-tabnow");
                    i.eq(r).show().siblings().hide()
                })
            }
        },
        n))
    };
    layer.photos = function(n, i, r) {
        function l(n, t, i) {
            var r = new Image;
            r.onload = function() {
                r.onload = null;
                t(r)
            };
            r.onerror = function(n) {
                r.onerror = null;
                i(n)
            };
            r.src = n
        }
        var u = {},
        s, c;
        if (n = n || {},
        n.photos) {
            var h = n.photos.constructor === Object,
            o = h ? n.photos: {},
            f = o.data || [],
            e = o.start || 0;
            if (u.imgIndex = e + 1, h) {
                if (0 === f.length) return void layer.msg("&#x6CA1;&#x6709;&#x56FE;&#x7247;")
            } else {
                if (s = $(n.photos), c = s.find(n.img || "img"), 0 === c.length) return;
                if (i || s.find(o.img || "img").each(function(t) {
                    var i = $(this);
                    f.push({
                        alt: i.attr("alt"),
                        pid: i.attr("layer-pid"),
                        src: i.attr("layer-src") || i.attr("src"),
                        thumb: i.attr("src")
                    });
                    i.on("click",
                    function() {
                        layer.photos($.extend(n, {
                            photos: {
                                start: t,
                                data: f,
                                tab: n.tab
                            },
                            full: n.full
                        }), !0)
                    })
                }), !i) return
            }
            u.imgprev = function(n) {
                u.imgIndex--;
                u.imgIndex < 1 && (u.imgIndex = f.length);
                u.tabimg(n)
            };
            u.imgnext = function(n, t) {
                u.imgIndex++;
                u.imgIndex > f.length && (u.imgIndex = 1, t) || u.tabimg(n)
            };
            u.keyup = function(n) {
                if (!u.end) {
                    var t = n.keyCode;
                    n.preventDefault();
                    37 === t ? u.imgprev(!0) : 39 === t ? u.imgnext(!0) : 27 === t && layer.close(u.index)
                }
            };
            u.tabimg = function(t) {
                f.length <= 1 || (o.start = u.imgIndex - 1, layer.close(u.index), layer.photos(n, !0, t))
            };
            u.event = function() {
                u.bigimg.hover(function() {
                    u.imgsee.show()
                },
                function() {
                    u.imgsee.hide()
                });
                u.bigimg.find(".layui-layer-imgprev").on("click",
                function(n) {
                    n.preventDefault();
                    u.imgprev()
                });
                u.bigimg.find(".layui-layer-imgnext").on("click",
                function(n) {
                    n.preventDefault();
                    u.imgnext()
                });
                $(document).on("keyup", u.keyup)
            };
            u.loadi = layer.load(1, {
                shade: "shade" in n ? !1 : .9,
                scrollbar: !1
            });
            l(f[e].src,
            function(i) {
                layer.close(u.loadi);
                u.index = layer.open($.extend({
                    type: 1,
                    area: function() {
                        var t = [i.width, i.height],
                        r = [$(window).width() - 100, $(window).height() - 100];
                        return ! n.full && t[0] > r[0] && (t[0] = r[0], t[1] = t[0] * r[1] / t[0]),
                        [t[0] + "px", t[1] + "px"]
                    } (),
                    title: !1,
                    shade: .9,
                    shadeClose: !0,
                    closeBtn: !1,
                    move: ".layui-layer-phimg img",
                    moveType: 1,
                    scrollbar: !1,
                    moveOut: !0,
                    shift: 5 * Math.random() | 0,
                    skin: "layui-layer-photos" + t("photos"),
                    content: '<div class="layui-layer-phimg"><img src="' + f[e].src + '" alt="' + (f[e].alt || "") + '" layer-pid="' + f[e].pid + '"><div class="layui-layer-imgsee">' + (f.length > 1 ? '<span class="layui-layer-imguide"><a href="javascript:;" class="layui-layer-iconext layui-layer-imgprev"><\/a><a href="javascript:;" class="layui-layer-iconext layui-layer-imgnext"><\/a><\/span>': "") + '<div class="layui-layer-imgbar" style="display:' + (r ? "block": "") + '"><span class="layui-layer-imgtit"><a href="javascript:;">' + (f[e].alt || "") + "<\/a><em>" + u.imgIndex + "/" + f.length + "<\/em><\/span><\/div><\/div><\/div>",
                    success: function(t) {
                        u.bigimg = t.find(".layui-layer-phimg");
                        u.imgsee = t.find(".layui-layer-imguide,.layui-layer-imgbar");
                        u.event(t);
                        n.tab && n.tab(f[e], t)
                    },
                    end: function() {
                        u.end = !0;
                        $(document).off("keyup", u.keyup)
                    }
                },
                n))
            },
            function() {
                layer.close(u.loadi);
                layer.msg("&#x5F53;&#x524D;&#x56FE;&#x7247;&#x5730;&#x5740;&#x5F02;&#x5E38;<br>&#x662F;&#x5426;&#x7EE7;&#x7EED;&#x67E5;&#x770B;&#x4E0B;&#x4E00;&#x5F20;&#xFF1F;", {
                    time: 3e4,
                    btn: ["下一张", "不看了"],
                    yes: function() {
                        f.length > 1 && u.imgnext(!0, !0)
                    }
                })
            })
        }
    }
} ()
